0

countByEnumeratingWithStateobject-c クラスにメソッドを実装しようとしています(たとえばMyClass 、このメソッドでは、

MyOtherClass *cl = [[MyOtherClass alloc] init];
buffer[count++] = cl;

その場でオブジェクトを割り当てなければならない理由は、それらのオブジェクトが「別の場所」に保存されているためです。ただし、アプリケーションからこのメソッドを使用すると、クラッシュします。

for (const MyOtherClass *cl in myClassObj){
    NSLog(@"obj: %@", cl.description);
}

この理由は、バッファーが「保持されていない」ため、ARC が countByEnumratingWithState の MyOtherClass オブジェクトを破棄する可能性が最も高いです。MyOtherClass オブジェクトが「保持」されていることを確認するにはどうすればよいですか?

関連情報:

  • スレッド #4: tid = 0x5ca941、0x0000000101a4cf8b libobjc.A.dylib objc_msgSend + 11, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) frame #0: 0x0000000101a4cf8b libobjc.A.dylibobjc_msgSend + 11
4

1 に答える 1

0

なぜ const キーワードを使用するのですか? const を使用すると、初期化のためだけにオブジェクトを割り当ててから、変更しようとしたときに例外をスローできます。それを試してください:

for (MyOtherClass *cl in myClassObj){
    NSLog(@"obj: %@", cl.description);
}
于 2013-12-19T10:35:10.117 に答える