我正在尝试将UIButton对象添加到数组,但它们无法这样做。每当我调用[pixels count]或[colors count]时,它都会返回0。我尝试使用[self.arrayName addObject:myObject]和[arrayName addObject:myObject],但似乎都不起作用。我对Objective-C还是很陌生,所以对我来说似乎很愚蠢,但这已经使我难过一个多小时。

这是ViewController.h的代码

 #import <UIKit/UIKit.h>

 @interface ViewController : UIViewController {
 NSMutableArray *pixels;
 NSMutableArray *colors;
 }
 @property (nonatomic, retain) NSMutableArray *pixels;
 @property (nonatomic, retain) NSMutableArray *colors;
 @end


这是ViewController.m中的相关代码

 int x = 30;
 int y = 60;
 for(int i=0; i<10; i++ ) {
      UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,y,20,20)];
      [self.pixels addObject:button];
      x += 20;
      y += 20;
 }


我已经压缩了整个项目,可以在这里下载:
http://mdl.fm/pixelated.zip

在此先感谢任何可以提供帮助的人!

最佳答案

在尝试使用数组之前,请尝试添加以下内容:

NSMutableArray *pixels = [[NSMutableArray alloc] init];


Obj-C中的数组在使用之前需要进行初始化。由于在nil实例上调用方法仅在Obj-C中返回零,因此很容易做到这一点,并且直到数组未存储您认为应该的内容时才注意到。

编辑以添加评论中的信息:

您可以将初始化放入-ViewDidLoad方法中,以便ViewController本身准备好后即可进行初始化。确保您retain它们,以免它们被自动垃圾收集。

10-01 23:04