Objective-Cのブロック
正確に言うと「ブロック」はObjective-CではなくAppleがC言語に標準として追加することを提案している機能です。ブロックとは何かというと、最近の言語だとだいたい含まれている「クロージャ」のことです。(だったら、「クロージャ」という名前にすればよいのだと思うのですが、なぜか「ブロック」という非常に一般的な言葉を選んでいます。さらに、C言語ではすでに{}で囲まれたところをブロックと呼んでいると...
View ArticleObjective-Cのカテゴリ
Objective-Cの機能のネーミングは、わかりにくい気がします。今回は名前からは想像できない機能を持つ「カテゴリ」です。 カテゴリは既存のクラスを、継承することのなく機能拡張してしまう機能です。なんと恐ろしい。 @interface MyClass : NSObject @end @implementation MyClass @end @interface MyClass...
View ArticleObjective-Cのmessage forwarding
selectorに続いて、関連の深いmessage forwardingについて。 あるオブジェクトから他のオブジェクトに処理の委譲をしたい場合、selectorを使うと以下のように書けます。 @interface DelegateClass : NSObject -(void)hello; @end @implementation DelegateClass -(void)hello {...
View ArticleObjective-Cのselector
Objective-Cのちょっと他には無い機能について、自分自身のメモのためにも書き留めておこうと思います。 まずは、selectorから。 C/C++の関数ポインタに近いですが、動的言語としての面も持ち合わせているObjective-Cらしい所もあり、Javaのリフレクション/イントロスペクションの方が近いかもしれません。 @interface MyClass : NSObject...
View ArticleObjective-C Key-Value Coding
Objective-Cには「Key-Value Coding (KVC)」というものが備わっており、文字列による名前指定でプロパティの値の取得、設定といったことができるらしい。Javaだと、Java Beans + BeanUtilsを組み合わせた機能といったところでしょうか。こういった機能が言語の標準機能として備わっているというのは面白い。 参考にした資料はKey-Value Coding...
View ArticleObjective-C ARCによるメモリ管理
Objective-Cを勉強していて一番驚いたのがメモリ管理の仕組みです。ちょっと前までは、手動メモリ管理(MRC: Manual Reference Counting)、その後、GCがMac OS Xのみに入ったけど、最近になって新たにARC(Automatic Reference Counting)が導入されたとのこと。これからはARCが主流となるとのことで、少し調べてみました。...
View Article