我正在将我的项目转换为ARC,当我到达一些NSOperation
子类负责在后台下载一些图像时,代码开始崩溃。NSManagedObject在NSOperation(ARC)上崩溃
所以,我有我的NSOperation
子类,其主要代码:
- (void)main
{
Post *p = [[Post alloc] initWithNewManagedObjectContext];
Post *post = (Post *)[p findById:postId];
[post downloadAndProcessImageOfTypeThumbOrAll:thumbOrAll];
if (![self isCancelled]) {
[target performSelectorOnMainThread:afterCompletionAction withObject:postId waitUntilDone:NO];
}
}
时没有ARC(以及适当的版本)编译的代码工作,但是当它转化为ARC收到的EXC_BAD_ACCESS在完成主要方法后异常。
我想这是与ARC发布任何对象之前它应该,也许是帖子对象有关的东西。但我不知道如何长时间保留它们。
此外,[[Post alloc] initWithNewManagedObjectContext];
创建或重新使用现有上下文从CoreData访问对象。
任何提示?
运行文书'NSZombiesEnabled'。这对这类问题有很大的帮助。 – borrrden 2013-02-26 01:13:42
什么是目标?你是否保持强烈的参考?如果你没有强引用,它会立即释放,在'performSelectorOnMainThread:'可以运行之前......这意味着你将发送一个消息给一个释放对象。 – nielsbot 2013-02-26 02:24:46
'post'也将被释放,除非你在其他地方有一个引用。 – nielsbot 2013-02-26 02:25:38