0

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

4 回答 4

3

不管它是否是全局变量,您仍然需要为对象调用allocinitSOMEWHERE。如果您打算在整个应用程序中使用它,那么appDidFinishLaunchingWithOptions添加这个调用是一个不错的地方:

imagesList = [[NSMutableArray alloc] init];
于 2012-05-24T18:47:47.890 回答
1

您的空数组是否被保留?如果您没有使用自动引用计数,则很有可能您正在使用以下内容初始化数组

imagesList = [[NSMutableArray alloc] init];

但它没有被保留。您需要保留空数组,以便将其附加到您的代码中。

imagesList = [[[NSMutableArray alloc] init] retain];

只是不要忘记在您完成后释放数组,在viewDidUnload合适的地方或任何地方。

于 2012-05-25T01:01:10.053 回答
0

imagesList尝试添加对象后,您正在分配/初始化。imageList在向其中添加任何内容之前,您需要分配/初始化。

为了确保它在那里,尝试这样的事情:

if (!imagelist) imageList = [[NSMutableArray alloc] init];

如果它存在,并且您仍然遇到此问题,则您可能正在分配/初始化一个新的 NSMutableArray 并imageList在添加对象后将其分配给它。这意味着旧数组将被丢弃,您将得到一个包含零项的新数组。

于 2012-05-24T20:19:27.587 回答
0

尝试UIImageView *image; image=[UIImage imageNamed:@"b.png"];

另外,@property(nonatomic,retain)使用“强”而不是“保留”

于 2012-05-30T05:14:08.853 回答