2011年11月16日水曜日

Objective-C入門 メソッドとクラス


このエントリーをはてなブックマークに追加



  • 基本的にC言語と同じ。

    • 大きく異なるのはメソッド呼び出しくらい。





メソッド呼び出し


メッセージ式

メッセージ式(角括弧[])でメソッド呼び出し。
コロンの前後で1セットという感じだが、最初だけ異なっている。
[object method:引数1 ラベル:引数2 ラベル2:引数3]


Perlでいうと、



$self->method(arg1, { ラベル => 引数2, ラベル2 => 引数3, })


って感じか。



  • 引数なしのメソッド呼び出し

    • [string length]



  • 引数1つ

    • [string characterAtIndex: 0]



  • 引数2つ

    • [string rangeOfString:@"hogehoge" options:NSCaseInsensitiveSearch]





メソッド名はラベルと末尾のコロンも含める

上記の引数2つのメソッド名は、rangeOfString:options: になる。


メソッドの宣言


C言語と同じく、最初に返り値の型を書き、あとは、各引数の型を書くだけ。型は()で囲む。



(NSRange)rangOfString:(NSString*)string options:(NSStringCompareOptions)mask



IDE上の+と-

-がインスタンスメソッド
+がクラスメソッド


クラス宣言(インタフェース)


ヘッダーファイルでクラス宣言する。クラス名は先頭大文字。



@interface クラス名:親クラス名
{
//インスタンス変数
//インスタンス変数はメソッド内の変数と区別するために先頭をアンダーバーにする規則もある
int hoge;
NSString* foo;
}

-(BOOL)isHoge //メソッド宣言
@end


クラスにスコープがない

このため、NS、UI、CAなどの接頭辞がある。



  • NS

    • Mac OS Xの前身、NEXTSTEPの略







型はCと同じものと、Objective-Cのものがある。Objective-Cの型は*を付ける。当然ポインタ参照なわけですね。
クラスはすべてヒープメモリに確保されるので、そのインスタンスをあらわす変数は実体ではなくポインタ。


クラス実装


hoge.mファイルに実装を書いていく。



#import "インタフェースのあるヘッダファイルパス"

@implementation クラス名
-(BOOL)isHoge
{
.......
return .....;
}
@end





0 件のコメント:

コメントを投稿