私は次の方法を持っています:
-(void)testAPIModule {
self.requests = [NSMutableArray array];
NSLog(@"making arrays");
/*(A)*/ id array1 = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithFloat:2], nil];
/*(B)*/ id array2 = [NSArray arrayWithObjects:[NSNumber numberWithInt:4], [NSNumber numberWithInt:5]];
NSLog(@"made array=%@",array2);
for( ServerRequest *req in self.requests ) {
[Networker sendRequest:req withDelegate:self];
[req release];
}
}
コードは期待どおりに実行されます。
ただし、行 (A) をコメントアウトするか、末尾の ",nil" を削除すると、EXC_BAD_ACCESS
行 (B) でエラーが発生します。デバッガーによると、+[NSArray arrayWithObjects] 組み込みコンストラクター内の CFRetain でエラーが発生します。
さらに、行 (A) をコメントアウトし、for(...) ループをコメントアウトすると、コードはメソッドを実行します。
これは私にとって非常に予想外です。行(B)で何が間違っていますか?そして、行 (A) で完全に異なる配列を作成すると、メソッドが実行されるのはなぜでしょうか? for(...) ループをコメントアウトすると、その前にある行 (B) のエラーが防止されるのはなぜですか?
誰かがこれがなぜなのか説明できますか? または、少なくともデバッグに関するアドバイスをください。メソッドが 1 回だけ実行され、「self」が有効であることは既に確認済みです。