[XCODE] @selectorの使い方、呼び出し方
今日はiPhoneアプリ開発ネタでライトな感じで。
今日は、Cocoaフレームワークで時々出てくる、@selectorについて、ブログを書きたいと思います。
その使い方とか。これを使えるようになると、JavaScriptのようなコールバック処理を 実現できるようになります(*´∇`*)

今回は、引数が2つあるメソッドを読み出す例を記載します。
続いて、@selectorを実際に使う箇所です。
以下例では、処理成功時と処理失敗時に、それぞれ、指定されたメソッドを呼び出しています。
上記のコールバックメソッドは、第1引数にエラー情報を受け取ります。node.jsっぽい設計です。
こーゆう設計の知識を増やすことで、今後の開発にも役立つ場面ができると良いなぁ。
最後までお付き合い頂きましてありがとうございました☆
今日は、Cocoaフレームワークで時々出てくる、@selectorについて、ブログを書きたいと思います。
その使い方とか。これを使えるようになると、JavaScriptのようなコールバック処理を 実現できるようになります(*´∇`*)

@selectorの使い方、呼び出し方
ではさっそく。以下のように、@selectorを指定して、呼び出すメソッドを指定することが出来ます。今回は、引数が2つあるメソッドを読み出す例を記載します。
// RSSのフィードを取得する処理を持つクラスを // インスタンス化しています。 FeedListLoader *loader = [[FeedListLoader alloc] init]; // フィードをサーバーから取得するメソッドを // 呼び出します。引数に処理終了時に呼び出される // コールバックメソッド(@selector)と、そのメソッドを持つインスタンスを指定します。 [loader loadFeedListWith:self selector:@selector(callbackFeedListLoaderWithError:xml:)];
続いて、@selectorを実際に使う箇所です。
以下例では、処理成功時と処理失敗時に、それぞれ、指定されたメソッドを呼び出しています。
- (void) loadFeedListWith:(id)callbacker callbackMethod:(SEL)callbackMethod {
NSString *feedXML = /*Feedを読み込む処理を実施*/;
if (feedXML) { // 処理成功時
// performSelector:withObject:withObjectという
// メソッドを呼び出すことで、@selectorで指定されたメソッドを
// 呼び出すことができる
[callbacker performSelector:callbackMethod
withObject:nil
withObject:xml];
} else { // 処理失敗時
// エラー原因を設定する
NSError *error
= [NSError errorWithDomain:nil
code:ERROR_CODE_BAD_REQUEST
userInfo:nil];
// エラーを通知する
[callbacker performSelector:callbackMethod
withObject:error
withObject:nil];
}
}
上記のコールバックメソッドは、第1引数にエラー情報を受け取ります。node.jsっぽい設計です。
最後に
Cocoaフレームワークで時々でてくる@selectorってやつ。 それについて調べて色々と知ることが出来て、ちょっとスッキリしました(*´∇`*)こーゆう設計の知識を増やすことで、今後の開発にも役立つ場面ができると良いなぁ。
最後までお付き合い頂きましてありがとうございました☆






