2009/11/18 11:22:29
- (IBAction) XXXX(メソッド名): (id) sender;
で、この : (id) sender ってナニモノかしら?と。
順番に考えていきましょうか。
- (IBAction) XXXX(メソッド名)ってのは、この辺でもお話ししたように、
開発基礎トレ2:アウトレットとアクションの使い方
・アクションは、【部品】→【プログラム】へ情報を伝える配線
でした。
View上(画面上)でボタンやテキストフィールドなどの部品がタッチされたら、
アクションを通じてプログラムが実行されるわけです。
で、このとき。
ボタンをタッチしたらルーレットが回る。
このようなアクションであれば、
「タッチされたかどうか」が問題なのでボタンの情報は必要ありませんね。
でも
画像をタッチしたらその画像の名前をラベルに表示したい。
このようなアクションの場合、
「タッチされた」後に、「何の画像がタッチされたの?」のような、
タッチされた部品の情報、つまり、引数が欲しくなるわけです。
ということで。
: (id) sender は、引数なんです。
(id) は引数の型のことで、
Objective-Cのオブジェクトなら何でもOK型を意味しています。
(UITextField *) みたいに書く代わりに (id) と書けるんです。
便利なんですけど何でもアリになってしまうので、
セキュリティ上と自分の中での整理上好ましく無い場合は、
きちんとしたクラス名を書くこともできます。
で、sender は引数の名前です。
お作法なのでこう書いておけばOKです。
アクションに接続されている部品(オブジェクト)が
丸ごとポーンと引数で渡されます。
先ほどの例で言うと、
画像の名前とか、サイズとか、そんなチマチマした項目単位で渡すんじゃなくて、
丸ごと1匹。後は勝手に捌いてくれ。
そんなオットコマエな渡し方が : (id) sender です。
ご質問のお答え的には
Q:
:(id)sender はあってもなくても良いものなんでしょうか?
A:
部品情報が要らないなら不要。部品情報が欲しいなら必要。
ということでいかがでしょう!
情報元:
blog:サルにでもできるiPhoneアプリの作り方
で、この : (id) sender ってナニモノかしら?と。
順番に考えていきましょうか。
- (IBAction) XXXX(メソッド名)ってのは、この辺でもお話ししたように、
開発基礎トレ2:アウトレットとアクションの使い方
・アクションは、【部品】→【プログラム】へ情報を伝える配線
でした。
View上(画面上)でボタンやテキストフィールドなどの部品がタッチされたら、
アクションを通じてプログラムが実行されるわけです。
で、このとき。
ボタンをタッチしたらルーレットが回る。
このようなアクションであれば、
「タッチされたかどうか」が問題なのでボタンの情報は必要ありませんね。
でも
画像をタッチしたらその画像の名前をラベルに表示したい。
このようなアクションの場合、
「タッチされた」後に、「何の画像がタッチされたの?」のような、
タッチされた部品の情報、つまり、引数が欲しくなるわけです。
ということで。
: (id) sender は、引数なんです。
(id) は引数の型のことで、
Objective-Cのオブジェクトなら何でもOK型を意味しています。
(UITextField *) みたいに書く代わりに (id) と書けるんです。
便利なんですけど何でもアリになってしまうので、
セキュリティ上と自分の中での整理上好ましく無い場合は、
きちんとしたクラス名を書くこともできます。
で、sender は引数の名前です。
お作法なのでこう書いておけばOKです。
アクションに接続されている部品(オブジェクト)が
丸ごとポーンと引数で渡されます。
先ほどの例で言うと、
画像の名前とか、サイズとか、そんなチマチマした項目単位で渡すんじゃなくて、
丸ごと1匹。後は勝手に捌いてくれ。
そんなオットコマエな渡し方が : (id) sender です。
ご質問のお答え的には
Q:
:(id)sender はあってもなくても良いものなんでしょうか?
A:
部品情報が要らないなら不要。部品情報が欲しいなら必要。
ということでいかがでしょう!
情報元:
PR
2009/10/31 11:25:37
Objective-C
基本的な文法と構成(クラスの宣言、ファイル構成)
クラスごとにファイルを作る。
ファイルの構成は、
ヘッダファイル
クラスの宣言
拡張子が .h
ソースコードファイル
クラスの実装
拡張子が .m
*ヘッダファイルを用いずひとつのファイルでクラスの宣言と実装を記述してもかまわない。
![iPhone デベロッパーズ クックブック](http://images.amazon.com/images/P/4797352418?ie=UTF8&tag=kaitof4005-22&linkCode=xm2&camp=247&creativeASIN=4797352418.09._OU09_SCTZZZZZZZ_.jpg)
この本のサンプルは、.m ファイルに全て記述してるみたい。
![d.jpg](http://blog.cnobi.jp/v1/blog/user/336a75046f144d709626d6caabef68c0/1256954702?w=150&h=105)
![e.jpg](http://blog.cnobi.jp/v1/blog/user/336a75046f144d709626d6caabef68c0/1256954728?w=119&h=150)
▶The iPhone Developer's Cookbook (著者 Erica Sadun) のサンプルのダウンロード
* .xib ファイルは、 Interface Builder で編集するユーザーインターフェースの定義ファイル。
----------------------------------------------------------------------------------
クラスの宣言の記述
ヘッダファイル:
![f.jpg](http://blog.cnobi.jp/v1/blog/user/336a75046f144d709626d6caabef68c0/1256956697?w=150&h=116)
ソースコードファイル:
![g.jpg](http://blog.cnobi.jp/v1/blog/user/336a75046f144d709626d6caabef68c0/1256956761?w=150&h=133)
----------------------------------------------------------------------------------
実際にプログラムを組んでみようかと思うと疑問が出てくる。
それは、どうゆう流れでプログラムが動いてるのか?ってことがわからない。
Interface Builder を使えば、数行のプログラムで実際に動くのだが、Interface Builder を使わなかったら、どうゆう流れで動くのか・・・
Interface Builder を使ったとしても複雑な処理のプログラムを組もうと思うと実際の流れ(挙動)がわからないといきづまる・・・
で参考になるサイトはないかと調べてみたら、こんなのがあった。
▶ Interface Builderを使わずに作るiPhoneアプリケーション作成入門
基本的な文法と構成(クラスの宣言、ファイル構成)
クラスごとにファイルを作る。
ファイルの構成は、
クラスの宣言
拡張子が .h
クラスの実装
拡張子が .m
*ヘッダファイルを用いずひとつのファイルでクラスの宣言と実装を記述してもかまわない。
![iPhone デベロッパーズ クックブック](http://images.amazon.com/images/P/4797352418?ie=UTF8&tag=kaitof4005-22&linkCode=xm2&camp=247&creativeASIN=4797352418.09._OU09_SCTZZZZZZZ_.jpg)
この本のサンプルは、.m ファイルに全て記述してるみたい。
▶The iPhone Developer's Cookbook (著者 Erica Sadun) のサンプルのダウンロード
----------------------------------------------------------------------------------
クラスの宣言の記述
ヘッダファイル:
ソースコードファイル:
----------------------------------------------------------------------------------
実際にプログラムを組んでみようかと思うと疑問が出てくる。
それは、どうゆう流れでプログラムが動いてるのか?ってことがわからない。
Interface Builder を使えば、数行のプログラムで実際に動くのだが、Interface Builder を使わなかったら、どうゆう流れで動くのか・・・
Interface Builder を使ったとしても複雑な処理のプログラムを組もうと思うと実際の流れ(挙動)がわからないといきづまる・・・
で参考になるサイトはないかと調べてみたら、こんなのがあった。
▶ Interface Builderを使わずに作るiPhoneアプリケーション作成入門
2009/10/31 09:34:22
C言語
関数にあたるもの
Objective-C
メソッド:何かしらの処理を行う。
メソッド名で呼び出す。呼び出す時は、引数を指定でき、処理の結果を戻り値として返すことができる。
*C言語 の関数は、関数名を指定するが、メソッドは必ず クラス名 を記述する。
Objective-C では、メソッドを呼び出すことを メッセージを送る という。
インスタンスメソッド:ー が先頭につく。
インスタンス変数やインスタンスメソッドは、インスタンスが存在しなければ呼び出すことはできまない。あらかじめメモリ領域を確保しなければいけないから・・・
クラスメソッド:+ が先頭につく。
インスタンスが存在しないために self オブジェクトが使えない。
インスタンスメソッド と クラスメソッド の違いをよく理解すれば、プログラムの基本的な流れが理解できるな・・・
関数にあたるもの
Objective-C
メソッド:何かしらの処理を行う。
メソッド名で呼び出す。呼び出す時は、引数を指定でき、処理の結果を戻り値として返すことができる。
*C言語 の関数は、関数名を指定するが、メソッドは必ず クラス名 を記述する。
Objective-C では、メソッドを呼び出すことを メッセージを送る という。
インスタンスメソッド:ー が先頭につく。
インスタンス変数やインスタンスメソッドは、インスタンスが存在しなければ呼び出すことはできまない。あらかじめメモリ領域を確保しなければいけないから・・・
クラスメソッド:+ が先頭につく。
インスタンスが存在しないために self オブジェクトが使えない。
インスタンスメソッド と クラスメソッド の違いをよく理解すれば、プログラムの基本的な流れが理解できるな・・・
2009/10/30 20:37:19
C言語
変数の型 変数名;
例:変数 i を 整数型で宣言
int a;
複数ある場合、
int a,b,c,d,e;
基本的な型
int 整数
char 文字
float 実数( 単精度浮動小数点実数 )
double 実数( 倍精度浮動小数点実数 )
データの代入
変数 = 値( 数値、ポインタ、文字 );
変数 = 計算式;
例:
a = 1000;
a = 1 * 5;
変数の宣言と代入を同時にやる。
int a = 10;
最後に ; (セミコロン) を必ずつけること!
基本的な変数の宣言だけど、これ以外に グローバル変数 と ローカル変数 がある。
グローバル変数
どの関数からも利用できる変数
ローカル変数
その関数内しか利用できない変数
*C言語でいう関数とは、Objective-C では メソッド のことかな。
Objective-C
基本的には C言語 の変数宣言と同じ。
変数の型 変数名;
変数がオブジェクトの場合は、
クラス名 *変数名;
変数名の前に * がつく。
NSString クラスのインスタンスを boxという名前で宣言するときは、
NSString *boxi;
アスタリスク付きの変数はデータそのものを保持するのではなく、データへのポインタを持つことを意味する。ポインタはデータを指し示すデータ。文字列である NSString クラスのインスタンスは別の場所に存在していて、それがどこにあるかがわかるようになっていると考えればいいらしい。
NSString っていう私書箱がどっかにあって、その私書箱の箱の番号って感じなのかなぁ・・・
特別な宣言として id型がる。
id name;
変数 name に文字列で TANAKA を代入する場合は、
name = @"TANAKA";
変数名 = @"文字列"; になる。
変数の型 変数名;
例:変数 i を 整数型で宣言
int a;
複数ある場合、
int a,b,c,d,e;
基本的な型
int 整数
char 文字
float 実数( 単精度浮動小数点実数 )
double 実数( 倍精度浮動小数点実数 )
データの代入
変数 = 値( 数値、ポインタ、文字 );
変数 = 計算式;
例:
a = 1000;
a = 1 * 5;
変数の宣言と代入を同時にやる。
int a = 10;
最後に ; (セミコロン) を必ずつけること!
基本的な変数の宣言だけど、これ以外に グローバル変数 と ローカル変数 がある。
グローバル変数
どの関数からも利用できる変数
ローカル変数
その関数内しか利用できない変数
*C言語でいう関数とは、Objective-C では メソッド のことかな。
Objective-C
基本的には C言語 の変数宣言と同じ。
変数の型 変数名;
変数がオブジェクトの場合は、
クラス名 *変数名;
変数名の前に * がつく。
NSString クラスのインスタンスを boxという名前で宣言するときは、
NSString *boxi;
アスタリスク付きの変数はデータそのものを保持するのではなく、データへのポインタを持つことを意味する。ポインタはデータを指し示すデータ。文字列である NSString クラスのインスタンスは別の場所に存在していて、それがどこにあるかがわかるようになっていると考えればいいらしい。
NSString っていう私書箱がどっかにあって、その私書箱の箱の番号って感じなのかなぁ・・・
特別な宣言として id型がる。
id name;
変数 name に文字列で TANAKA を代入する場合は、
name = @"TANAKA";
変数名 = @"文字列"; になる。
2009/10/30 19:59:08
Objective-C を真面目に覚えていこうと思います。
あくまでも独自解釈なので間違ってるかも知れませんf^^;
参考にしてる書籍は、
![iPhone デベロッパーズ クックブック](http://images.amazon.com/images/P/4797352418.09._OU09_SCTZZZZZZZ_.jpg)
Objective-C と C言語
Objective-C の基盤になっているのが C言語。
C言語 にオブジェクト指向プログラミング機能を追加した言語が Objective-C。
オブジェクト指向プログラミング以外はすべて C言語 として記述する。
iPhone 用アプリの開発には C言語 の知識が必要。
ん〜 C言語 も学ばないといけないのか・・・
C言語が学べるサイト
▶初心者のためのポイントC言語
▶C言語入門
あくまでも独自解釈なので間違ってるかも知れませんf^^;
参考にしてる書籍は、
![iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩](http://images.amazon.com/images/P/4798022322?ie=UTF8&tag=kaitof4005-22&linkCode=xm2&camp=247&creativeASIN=4798022322.09._OU09_SCTZZZZZZZ_.jpg)
![詳解 Objective-C 2.0](http://images.amazon.com/images/P/4797346809.09._OU09_SCTZZZZZZZ_.jpg)
![サンプルプログラムから学ぶ iPhone SDK プログラミングガイド](http://images.amazon.com/images/P/4844326929.09._OU09_SCTZZZZZZZ_.jpg)
![iPhone デベロッパーズ クックブック](http://images.amazon.com/images/P/4797352418.09._OU09_SCTZZZZZZZ_.jpg)
Objective-C と C言語
Objective-C の基盤になっているのが C言語。
C言語 にオブジェクト指向プログラミング機能を追加した言語が Objective-C。
オブジェクト指向プログラミング以外はすべて C言語 として記述する。
iPhone 用アプリの開発には C言語 の知識が必要。
ん〜 C言語 も学ばないといけないのか・・・
C言語が学べるサイト
▶C言語入門