0

我正在尝试将 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

提前感谢任何可以提供帮助的人!

4

2 回答 2

4

在尝试使用数组之前尝试添加:

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

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

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

您可以将初始化放入-ViewDidLoad方法中,以便在ViewController自身准备好后它们就可以开始了。确保你retain是他们,所以他们不会自动被垃圾收集。

于 2012-12-04T23:01:19.470 回答
2

您在 init 方法中初始化了像素——您在情节提要中设置的控制器不会调用 init。将其更改为 initWithCoder: 或将数组初始化移动到 viewDidLoad。

于 2012-12-04T23:05:41.070 回答