无法将图像存储在NSMutableArray中

时间:2012-05-24 18:21:34

标签: objective-c uiimage nsmutablearray xcode4.3

我正在尝试将图像保存在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];

4 个答案:

答案 0 :(得分:3)

无论是否为全局变量,您仍需要为对象调用allocinit 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'