作者whitefur (白毛)
看板MacDev
标题Re: [问题] managedObjectContext save: EXC_BAD_AC
时间Tue Nov 12 15:36:26 2013
※ 引述《whitefur (白毛)》之铭言:
: 标题: [问题] managedObjectContext save: EXC_BAD_AC
: 时间: Tue Nov 5 16:28:31 2013
:
: 使用AFNetwroking 1.3.3的AFHttpClient – postPath:parameters:success:failure:
:
: 在第一次呼叫postPath时
:
: 於success block里
:
: 利用[NSEntityDescription insertNewObjectForEntityForName:]建立一个object
:
:
:
: 第二次呼叫postPath时
:
: 於success block里
:
: 执行
:
: //remove刚刚建立的object
: [moc deleteObject:object]
:
: //在跑完这一行就crash了, 出现EXC_BAD_ACCESS(code=1, address=.....)
: [moc save:&error]
:
:
: http://i.imgur.com/VtB2TSW.jpg
:
: 我猜可能是因为在不同的operation queue操作core data
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: → tom19830924:AFNetworking我记得block返回会呼叫main_queue 11/05 17:03
: → tom19830924:你先确认moc, object还在不在, moc跟appdelegate是不 11/05 17:04
: → tom19830924:是同一个实体看看 11/05 17:04
: 如果在crash之後
:
: 再重新开启App
:
: 然後直接执行上述的第二次呼叫
:
: 就能顺利删除最一开始insert的object
终於发现问题在哪了
因为我insert完该NSManagedObject後
有对它使用KVO
ex:
MyObj *obj = [NSEntityDescription insertNewObjectForEntityForName......];
[obj addObserver:self forKeyPath:....];
[_managedObjectContext deleteObject:obj];
所以把obj delete掉才会crash
跟AFNetworking的operation queue完全没有关系
stackoverflow上有跟我类似的问题
http://0rz.tw/bPB3h
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.128.111
※ 编辑: whitefur 来自: 61.230.128.111 (11/12 15:36)
※ 编辑: whitefur 来自: 61.230.128.111 (11/12 18:01)