Hatena::Groupiphone-dev

iPhoneアプリ開発まっしぐら★ このページをアンテナに追加 RSSフィード

引っ越し後の日記はコチラです

tokoromのその他の日記

2009-07-12

メソッドの動的な呼び出し(1)

00:03 | はてなブックマーク - メソッドの動的な呼び出し(1) - iPhoneアプリ開発まっしぐら★

文字列から動的に作成したセレクタを使ってメソッドの呼び出しを行う場合、performSelector:メソッドを使用します。

  SEL sel = NSSelectorFromString( @"sayMessage:" );
  if ( [self respondsToSelector:sel] ) {
    [self performSelector:sel withObject:@"Hello."];
  }

引数が無い場合にはperformSelector:、1つある場合にはperformSelector:withObject:、2つある場合にはperformSelector:withObject:withObject:をそれぞれ利用します。

それでは、引数が3つある場合には・・・

performSelector:withObject:withObject:withObject:

なんてメソッドは存在しないのでどうしましょ?

続きはこちら

名無し名無し2009/07/13 12:32Three20というライブラリを公開している方がいます。その中のNSObjectAdditionsあたりを参考にしてみてはいかがでしょうか。

tokoromtokorom2009/07/13 14:06名無しさん、コメントありがとうございます!
Three20素晴らしいですねー。
このエントリの続きは今日明日で書くつもりなのですが、私が昨日、NSInvocation試行錯誤しながらようやく辿り着いた答えが、NSObjectAdditions.m にばっちり、そしてより綺麗に書かれていました!
Three20、今後も参考にさせていただきます。多謝!!

HKHK2009/07/14 22:40Cocoa Break! というサイトをやってる者です。Mac OS X や iPhone の開発関連の日本語サイトを収集していて、リンク集に掲載させていただきました。コメント等で問題がありましたら、ご連絡ください。これからもがんばってください。用件のみですが失礼します。

tokoromtokorom2009/07/15 08:17HKさん、リンクありがとうございました!

ゆうゆう2012/05/27 23:47こちらのサイトで勉強させて頂いています。いつもありがとうございます。


教えて頂きたい事があります。

メソッドの動的な呼び出し?を行いたいと考えています。

イメージでは以下のような感じです。
[imageButton1 setImage:image forState:UIControlStateNormal];
[imageButton2 setImage:image forState:UIControlStateNormal];
[imageButton3 setImage:image forState:UIControlStateNormal];
.
.
.

というようにimageButton以下の数字を変えていきたいです。

調べていく中で respondsToSelector、performSelectorを用いると実現できるようなのですが、なかなか上手くいきません。

申し訳ないのですが、よろしければやり方を教えて頂けないでしょうか。

よろしくお願いします。

因に当方Xcode4.3.2でARCを使用しています。