这是一个与此相关的问题。
从可变数组中删除对象时,我注意到可能会向该对象发送“保留”消息,因此我搜索了上述问题,其中wm给出的答案提到 NSMutableArray 的内部实现可能首先保留对象,然后移除该对象时释放它两次。
我的问题是:有任何证据证明这一点吗?或者有人知道任何相关细节吗?
retain
我在分析以下日志时遇到了这个问题,我知道我的代码有问题,但我关心的不是错误本身,而是“当有一些工作时”是否是事实removeObject
。
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc[299]: FREED(id): message retain sent to freed object=0x23f62a0
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x9a3694fd _objc_error + 116
1 libobjc.A.dylib 0x9a369533 __objc_error + 52
2 libobjc.A.dylib 0x9a36783a _freedHandler + 58
3 com.apple.CoreFoundation 0x9879a8cb -[NSMutableArray removeObject:range:identical:] + 331
4 com.apple.CoreFoundation 0x9879a770 -[NSMutableArray removeObject:] + 96