• ベストアンサー

objective-cについて

現在objective-cを勉強中なのですが、デリゲートでつまっています。 参考書などを読むとよく「オブジェクトの処理を他のオブジェクトが代理で処理すると」とあるのですが、デリゲートを使うメリットは何なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anyhelp
  • ベストアンサー率43% (79/180)
回答No.1

デリゲートはクラス間の通信、クラスを汎用的に使い回したい場合に使います。 たとえば、サイズを渡したい時に直接渡す場合、別のクラスにサイズを持っているクラスを渡すというのも手っ取り早い一つの方法です。こうすると、クラスが固定されてしまう訳です。そのクラス以外を指定するにはクラス名をかえなければなりません。 サイズを渡してくれるならどのクラスでも使えるようにしたいというケースもありますね? その場合にはサイズを戻してくれるメソッドを実装した汎用のクラスをわたせばすむわけです。サイズを戻すメソッドを実装している事、実装しなければならない事、サイズが欲しい場合には別のクラスに定義されたメソッドを必ず呼んでくれる事がクラス同士のルールになっていればこの関係が成り立ちます。このdelegateパターンは、メソッドを持っている事を示すために@protocolとセットで使います。

rnouveau
質問者

お礼

迅速かつ、わかりやすい回答ありがとうございます。 やはりデリゲート自体、かなり重要な役割を果たしているんですね☆ これからデリゲートパターンを扱えるよう、もっと勉強していきます☆

関連するQ&A

  • objective-Cについてご相談があります。

    現在objective-cを勉強中なのですが、 UIGraphicsGetImageFromCurrentImageContext() の末尾にある()の意味を教えて頂けないでしょうか。 以上、どなたか何卒宜しくお願い致します。

  • objective-cを勉強したいのですが、

    objective-cを勉強したいのですが、 まずc言語から勉強した方がよろしいですか?

  • objective-cの変数結合について

    毎度お世話になります。 objective-cでのループ処理を利用したオブジェクトと変数の結合方法が分からなくて質問する事にしました。 私の検索方法が悪いのか見つからなかったので・・ phpでループを利用した変数の結合をする場合だと、 for($i = 0; $i < 2; $i++){ echo "com".$i; } でcom0とcom1の表現が問題なくいけますが、 objective-cではどのようになるのでしょうか。 初級的な質問で申し訳ないのですが、どうかよろしくお願いします。

  • objective-cを勉強する前に読むべき本

    objective-cを勉強する前に読むべき、全ての プログラミング言語、またはオブジェクト指向 言語で共通する要素をまとめた本などがあったら ご紹介いただけないでしょうか。 以上、何卒よろしくお願いいたします。

  • C、Objective-Cについて

    現在iPhoneアプリ作成のため、C言語を勉強しています。 以前にJavaを勉強したことがあるため、C言語の勉強を始めてみて、まだまだ序盤ではありますが「Javaと同じ部分が結構あるなぁ」と感じています。 iPhoneアプリを作成しようと思い、勉強を始める際、C言語から勉強した方がよいとネットで多く見られたので、C言語から勉強をしているのですが、Javaと共通部分が多いと感じる今、このままC言語をしっかりと勉強した上でObjective-Cに移行した方がよいか、すぐに移行して勉強をした方がよいか悩んでいます。 アプリ開発をされている方々の経験則からアドバイスを頂けるとうれしいです。 よろしくお願いいたします。

  • Objective-CでCの関数に引数をわたしてあげたいのですが。

    NSArray *filetype = [ NSArray arrayWithObject : @"'TEXT'" ]; NSOpenPanel *opfile = [ NSOpenPanel openPanel ]; と書いた後に[opfile filename]にファイルパスが入っているとゆうことなんですが、これをchar型の変数に渡してCの関数に渡してあげたいのですがいろいろ試してみたんですがやり方がさっぱりわからず周りの人たちもObjective-Cはわからないので困っています。このあと aaaaa(char *file,int aaa); みたいな関数を呼びたいんですが初めにプロトタイプ宣言してそのまま呼んでも大丈夫なんでしょうか? わたくしObjective-C歴2日、C歴3ヵ月半の若輩者です。経験者のみなさんよろしくお願いいたします。 動作環境はMacOSX、ProjectBuilderのcocoaでやってます。 参考にしたサイトは「cocoaはやっぱり」で勉強してます。 本は「MacOSXプログラミング入門OBjective-C」を昨日買いました。 その他注意事項ありましたら言ってくださると助かります。

  • objective-cにはCのような関数はない?

    c言語とobjective-cを並行して勉強しています。 c言語では機能をまとめるために関数を定義できますよね。 ----- void display(int a){ printf("%d" , a); } int main(void){ display(10); } --- これでdisplayという関数に10という引数を渡して表示させることができますよね? objective-cの場合は例えば以下のように書くことがわかり、コンパイルも通りました。 - (void)display{ NSlog(@" TEST "); } しかし・・・・呼び出すことができませんね。。。 objective-cの場合は[ インスタンス メソッド名 ]; のような呼び方なのですよね。 メソッドだけを呼び出すことはできない、ってことなのでしょうか・・・? 色々検索してみたのですが、 @implement~@endで囲んでクラスにして インスタンスを作って、メソッドを呼ぶ方法ばかりで、 上記のC言語の例のような、単純な関数定義→呼び出しの方法を見つけることができませんでした。 上記のようなC言語の例はよくあると思うのですが、 これと同じことがobjective-cで、できるともできないとも、書いてないように思います。 例えば上のc言語と同じ動作をobjective-c に移植するとどうなるのでしょうか・・・?というか、不可能、ということでしょうか・・・?

  • Objective-cのextendedって,,?

    現在iPhone用アプリケーション開発の為、Objective-cの学習をしています。 その中で、UIAlertViewクラスのオブジェクトにテキストボックスを追加する方法を探していまして、見つけたソースコードの中のヘッダーファイルに @interface UIAlertView (extended) という記述がありました。 この(extended)とはどういう意味なのでしょうか? 分かる方居ましたら教えていただけるとうれしいです。

  • XCodeでObjective-Cを使ってプログラミングしたい(初心者です)

    Macでプログラミングを始めました。でもすごく初心者です。 『XCode2 入門』という本で (http://www.amazon.co.jp/exec/obidos/ASIN/4839918805/250-8186511-3142616)、 XCodeの基本的な使い方を勉強しました。 が、(予想はしていたのですが)私はObjective-Cが分からないので、 ここから先に進めません。 Cについてはほんのちょこっとだけ知っていて、 forやwhileループは分かりますが、配列やポインタは…分かる、かな?ってぐらいです。 Objective-CもCが根っこにあると聞きますから、 Cの勉強がもっと必要なのかな?と思っていたのですが、 Objective-CはCとはぜんぜん違う、なんて話もあったり。 わたしはこれから、どういう勉強をしていくべきなのでしょう? また、それにあたっておすすめの本かウェブサイトを教えてください。 長くてすみません…。 OSはMacOS X 10.4、XCode 2.0でObjective-Cを使っています。 プログラミング経験はHyperCardだけです(←これなら得意)。

  • メソッドのサンプル(objective-c)

    現在objective-cを勉強しているのですが、メソッドの引数や 戻り値が具体的にどう動いているのかを観察できるような アプリやプログラムを探しております。書籍・サイトどちらでもよいので そのありかを教えて頂けないでしょうか。 以上、何卒宜しくお願い致します。