忍者ブログ
2024 / 09
≪ 2024 / 081 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 2024 / 10 ≫

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



- (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:
部品情報が要らないなら不要。部品情報が欲しいなら必要。

ということでいかがでしょう!

情報元:
3e20312f.pngblog:サルにでもできるiPhoneアプリの作り方


PR


Objective-C

基本的な文法と構成(クラスの宣言、ファイル構成)

クラスごとにファイルを作る。

ファイルの構成は、

h.jpgヘッダファイル
クラスの宣言
拡張子が .h


m.jpgソースコードファイル
クラスの実装
拡張子が .m

ヘッダファイルを用いずひとつのファイルでクラスの宣言と実装を記述してもかまわない。
iPhone デベロッパーズ クックブック
この本のサンプルは、.m ファイルに全て記述してるみたい。
d.jpge.jpg










▶The iPhone Developer's Cookbook (著者 Erica Sadun) のサンプルのダウンロード

xib.jpg .xib ファイルは、 Interface Builder で編集するユーザーインターフェースの定義ファイル。



----------------------------------------------------------------------------------
クラスの宣言の記述

ヘッダファイル
f.jpg








ソースコードファイル
g.jpg









----------------------------------------------------------------------------------
実際にプログラムを組んでみようかと思うと疑問が出てくる。
それは、どうゆう流れでプログラムが動いてるのか?ってことがわからない。
Interface Builder を使えば、数行のプログラムで実際に動くのだが、Interface Builder を使わなかったら、どうゆう流れで動くのか・・・
Interface Builder を使ったとしても複雑な処理のプログラムを組もうと思うと実際の流れ(挙動)がわからないといきづまる・・・

で参考になるサイトはないかと調べてみたら、こんなのがあった。
Interface Builderを使わずに作るiPhoneアプリケーション作成入門

 




C言語

関数にあたるもの

Objective-C

メソッド:何かしらの処理を行う。
メソッド名で呼び出す。呼び出す時は、引数を指定でき、処理の結果を戻り値として返すことができる。

C言語 の関数は、関数名を指定するが、メソッドは必ず クラス名 を記述する。
Objective-C では、メソッドを呼び出すことを メッセージを送る という。

インスタンスメソッド
:ー が先頭につく。
インスタンス変数インスタンスメソッドは、インスタンスが存在しなければ呼び出すことはできまない。あらかじめメモリ領域を確保しなければいけないから・・・

クラスメソッド:+ が先頭につく。
インスタンスが存在しないために self オブジェクトが使えない。

インスタンスメソッド と クラスメソッド の違いをよく理解すれば、プログラムの基本的な流れが理解できるな・・・




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";
変数名 = @"文字列"; になる。



Objective-C を真面目に覚えていこうと思います。

あくまでも独自解釈なので間違ってるかも知れませんf^^;

参考にしてる書籍は、

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩 詳解 Objective-C 2.0 サンプルプログラムから学ぶ iPhone SDK プログラミングガイド iPhone デベロッパーズ クックブック

Objective-C と C言語

Objective-C の基盤になっているのが C言語。
C言語 にオブジェクト指向プログラミング機能を追加した言語が Objective-C
オブジェクト指向プログラミング以外はすべて C言語 として記述する。

iPhone 用アプリの開発には C言語 の知識が必要。

ん〜 C言語 も学ばないといけないのか・・・

C言語が学べるサイト
pointc.gif▶初心者のためのポイントC言語



▶C言語入門



08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
HN:
cow

自己紹介:
iPhone購入がきっかけでiPhoneアプリの制作にチャレンジ!