Objective-cのクラスの概念
objective-cを書いていて1年くらい経ちますが...
未だにクラスメソッドとインスタンスメソッドの使い分けに自信が無いです。
クラスを更に考える(1/8):初心者のためのObjective-Cプログラミング入門
クラスメソッド
- + (void) classMethod;
- - (void) instanceMethod; てきな感じて、+,-でかき分けています。
何が違うのかっていうと クラスメソッドはallocしなくてもメソッドを呼ぶことができるんです。
っていうことはメソッドを呼ぶ時に
TestClass *tClass = [TestClass alloc] init]; [tClass testMethod];
ではなく
[TestClass testMethod];
で呼べるのです。
だったら全部クラスメソッドでいいじゃん(初心者的思考)
しかし、制約があります
リンク先にもあるよう、原則クラスメソッドだけで完結するようなものでなければいけないのです。
クラスから直接インスタンスメソッドを呼び出すこともできません。つまりクラスメソッドは、クラスメソッドだけで完結するような形で作成されることになります。そう考えると、用途はだいぶ限定されると言っていいでしょう。
つまり
+ (void) classMethod { [self instanceMethod]; } - (void) instanceMethod { ... }
というような使い方はできないのですね。
使いどころをまだまだ極められませんが。。。
これからも勉強を続けます!!