Objective-cのブロックからのコールバックパラメータを使用して直接呼び出したいインスタンスメソッドがあります。コールバックで単純な1ライナー以上のことを行う必要がある場合は、このアプローチを好みます。
これが基本的なセットアップです...
ある種のコールバックを使用してクラスを初期化するので、httpリクエストでjsonを解析できます。
- (void)initFooAndDoStuff {
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
// do stuff
}];
}
//this is the instance method I'd like to invoke instead of an inline function
- (void)callBackWithHttpResponse:(NSData *)response {
// do stuff ... assuming it's more complex than a 1 liner that is
}
インラインで何かを行うコールバックを設定できます(ただし、スタンドアロンのインスタンスメソッドでは、より複雑なものの方が良いでしょう)
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
NSLog(@"foo");
}];
以下のようなインスタンスメソッドを使用できますが、少し時間がかかります。とにかく私はこれを減らすことができます(つまり構文)。
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
[self callBackWithHttpResponse:response];
}];