今日はObjective-Cの学習をメインに行いました。
C言語を拡張してオブジェクト指向対応させた言語ということでC++と似たものかと思っていましたが、全く別物だということが分かりました。
C++が静的型付け言語であるのに対し、Objective-Cは動的型付け言語になっています。
カテゴリ機能により既存クラスにメソッドを追加できる所などは、ruby等のスクリプト言語を想起させます。
その他、注目ポイントを列挙しておきます。
- プロトコル(形式プロトコル)は Java の Interface 相当のもの
- セレクタは Java の Reflection における Method クラスのようなもので、@selector指示子もしくはNSSelectorFromStringメソッドで取得できる
- 任意のインスタンスにおいて class メソッドで Class インスタンスを取得でき、クラスのメタ情報を取得できる
- NSObject は以下のようなメソッドを持っていて、Class やセレクタと組み合わせて様々な情報を得ることができる
- respondsToSelector: 引数で渡されたセレクタが実装されているかどうかを調査
- performSelector: セレクタで渡されたメソッドを呼び出す
- isKindOfClass: 継承関係の調査
- isMemberOfClass: 継承関係ではなくそのクラス直属のインスタンスかどうかを調査
- description クラス名を文字列で返す
今日の学習は以下のサイトを利用しています。非常に分かりやすくまとまっていて役に立ちました。
0 件のコメント:
コメントを投稿