デリゲート メソッド内にブロックを作成し、それを使用して別のクラスの静的メソッドを呼び出しています。NSZombies を有効にしても、EXC_BAD_ACCESS エラーが発生します。同様の問題に関するいくつかの投稿がここにあります-これが最も近いと思います:
ARC: デリゲート メソッドで使用されるブロック内から EXC_BAD_ACCESS を取得する
しかし、これまでのところ、役に立ったものは何も見つかりませんでした。コードは次のとおりです。
@interface MyClass()
@property (nonatomic, copy) CaseBlock c;
@end
....
//NSURLConnection delegate method
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
//blows up after executing this
^() { [AnotherClass staticMethod]; },authURL,
^() { NSLog(@"TODO");}, searchURL,
^() { NSLog(@"TODO"); }, itemURL,
nil];
self.c = [[d objectForKey:[self.url path]] copy];
if (self.c) {
self.c();
} else { NSLog(@"WARN unexpected response path"); }
}
ブロックを使用しようとしたのはこれが初めてですが、ブロックの外側からメソッドを呼び出すと問題なく動作するため、これが問題の原因であることがわかります。また、私が知る限り、私が書いたすべてのコードが実際に実行され、EXC_BAD_ACCESS エラーが発生します。しかし、私はObjective-Cを初めて使用するので、間違っている場合は修正してください。