[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ってやつ。 それについて調べて色々と知ることが出来て、ちょっとスッキリしました(*´∇`*)こーゆう設計の知識を増やすことで、今後の開発にも役立つ場面ができると良いなぁ。
最後までお付き合い頂きましてありがとうございました☆