我正在尝试将图像保存在NSMutable数组中,但它无法正常工作
这就是我正在做的事情
[imagesList addObject:[UIImage imageNamed:@"b.png"]];
执行此行后,我注意到对象的数量仍为0 有什么原因吗?
由于
我在几个方面重复了这段代码:
全球我宣布:
NSMutableArray *imagesList;
NSUserDefaults *imagesHistory;
在我的viewdidload方法中写道:
imagesHistory=[NSUserDefaults standardUserDefaults]; //imagesHistory is created globallt as NSUserDefault imagesHistory
[imagesHistory setObject:imagesList forKey:@"images history"];
UIImage *image;
image=[UIImage imageNamed:@"b.png"];
[imagesList addObject:image];
imagesHistory=[NSUserDefaults standardUserDefaults];
[imagesHistory setObject:imagesList forKey:@"images history"];
在我写的didFinishLaunchingWithOptions中:(即使我在添加字符串时不需要这样做...)
imagesList = [[NSMutableArray alloc] init];
答案 0 :(得分:3)
无论是否为全局变量,您仍需要为对象调用alloc
和init
SOMEWHERE。如果您打算在整个应用中使用它,那么appDidFinishLaunchingWithOptions
是添加此通话的合适位置:
imagesList = [[NSMutableArray alloc] init];
答案 1 :(得分:1)
您的空数组是否被保留?如果您没有使用自动引用计数,则很有可能使用以下内容初始化数组
imagesList = [[NSMutableArray alloc] init];
但它没有被保留。您需要保留空数组,以便在代码中进一步附加。
imagesList = [[[NSMutableArray alloc] init] retain];
不要忘记在完成所有操作后,在viewDidUnload
或适当的地方发布数组。
答案 2 :(得分:0)
在尝试添加对象后,您正在分配/初始化imagesList
。在向其添加任何内容之前,您需要分配/ init imageList
。
要确保它在那里,尝试这样的事情:
if (!imagelist) imageList = [[NSMutableArray alloc] init];
如果它存在,并且您仍然遇到此问题,则可能是在添加对象后分配/启动新的NSMutableArray并将其分配给imageList
。这意味着旧数组将被丢弃,并且您将留下一个零项目的新数组。
答案 3 :(得分:0)
尝试UIImageView *image;
image=[UIImage imageNamed:@"b.png"];
另外,在@property(nonatomic,retain)
中使用'strong'代替'retain'