我正在尝试将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
提前感谢任何可以提供帮助的人!
答案 0 :(得分:4)
尝试在尝试使用数组之前尝试添加此内容:
NSMutableArray *pixels = [[NSMutableArray alloc] init];
Obj-C中的数组需要在使用前初始化。由于在nil实例上调用方法只是在Obj-C中返回零,所以很容易做到这一点,直到你的数组没有存储你认为它应该存储的内容时才会注意到。
编辑以添加评论信息:
您可以将初始化放入-ViewDidLoad
方法,以便在ViewController
本身准备就绪后准备就绪。确保你retain
他们,所以他们不会自动垃圾收集。
答案 1 :(得分:2)
您在init方法中初始化了像素 - 没有为您在故事板中设置的控制器调用init。将其更改为initWithCoder:或将数组初始化移至viewDidLoad。