【发布时间】:2012-02-21 09:43:34
【问题描述】:
在向NSMutableArray 添加对象时,我遇到了关于内存管理的问题。奇怪的是,我添加的前 8 个对象一切正常,但添加第 9 个对象时,应用程序在检索此对象时崩溃。
UploadStatus *status = [[UploadStatus alloc] initWithStatus:[NSString stringWithFormat:@"%@: %d", NSLocalizedString(@"uploadPictureSucceeded", @""), pic_id]
andImageInProgress:nil
imageForSuccess:nil
imageForFailed:nil];
[self.delegate notify:status];
[status release];
这是在几个不同文本的地方进行的。但是这个对象包含我在UITableView 中显示的状态。
在委托的 notify 方法中,我将 UploadStatus 对象添加到 NSMutableArray 并重新加载显示该数组中的对象的 UITableView。
前 8 次我将 UploadStatus 对象添加到数组并重新加载表,它显示正确。但我第 9 次收到错误 [CFString retain]: message sent to deallocated instance 0x5c655c0。在cellForRowAtIndexPath 方法中重新加载表时会出现此错误。
奇怪的是它总是显示NSMutableArray 中的对象超出了范围,就像下面的截图一样:
尽管如此,如果我获取项目,将其转换为 UploadStatus 类并从中获取 status,一切都会顺利进行(对于前 8 个对象)。
在将第 9 个 UploadStatus 对象添加到 NSMutableArray 后,是否有人知道为什么会出错?
非常感谢您的帮助!
【问题讨论】:
-
你应该展示你是如何构建 NSMutableArray
标签: objective-c memory nsmutablearray zombie-process