Python や Haskell などの言語でクロージャを使用するのが本当に好きだったので、初めて目的の c ブロックを使用しようとしました。
問題が発生しましたが、誰かが助けてくれることを願っています。
以下は、私が抱えている問題の最も単純なバージョンです。
typedef void(^BlockType)(NSString *string);
- (void)testWithtarget:(id)target action:(SEL)action
{
BlockType block = ^(NSString *string) {
[target performSelector:action withObject:data];
};
block(@"Test String"); // Succeeds
[self performSelector:@selector(doBlock:) withObject:block afterDelay:5.0f];
}
- (void)doBlock:(BlockType)block
{
block(@"Test String 2"); // Causes EXC_BAD_ACCESS crash
}
したがって、私を驚かせないメモリ管理の問題のように見えますが、解決策を確認する知識がありません。おそらく私がしようとしていることは不可能かもしれません。
他の人がどう思うか興味があります:)