0

これはこれに関連する質問です。

可変配列からオブジェクトを削除すると、そのオブジェクトに「保持」メッセージが送信されている可能性があることに気付いたので、上記の質問を検索しました。wmは、NSMutableArray の内部実装が最初にオブジェクトを保持し、次にオブジェクトを保持する可能性があると回答しました。そのオブジェクトを削除するときは、2 回離します。

私の質問は次のとおりです。これに対する証拠はありますか? または、関連する詳細を知っている人はいますか?

以下のログを分析しているときにこの問題に遭遇しました。コードに何か問題があることはわかっていますが、私の懸念はバグ自体ではなく、「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
4

1 に答える 1