クラスメソッドとインスタンスメソッドについて

objective-cでは、クラスメソッドインスタンスメソッドがあります。

その違いは何なんでしょう。

クラスメソッドは、「+」で始まります。
インスタンスメソッドは、「-」で始まります。

て本に書いてあって、見れば分かるかもしれませんが、
その使い分けはどのようにしたらいいのだろうか?
まず基本的な違いですが、

クラスメソッドは、インスタンスを生成せずに他のクラスから直接使用できます。

その代わり、インスタンスを生成しないので、インスタンス変数、インスタンスメソッドを使うことはできません。

インスタンスメソッドは、インスタンスを生成して呼び出します。

例)クラスメソッド

//メソッド
@implementation HogeClass

+ (void)setString{
    NSLog(@"クラスメソッド:");
}

//メソッドを呼び出す
[HogeClass setString];

例)インスタンスメソッド

//メソッド
@implementation HogeClass  

- (void)setString {
    NSLog(@"インスタンスメソッド:");
}
//メソッドを呼び出す
HogeClass *testObj = [[HogeClass alloc] init];
[testObj setString];

以上の事から、

クラスメソッドは汎用性が高く、引数の値などだけで処理が完了するようなメソッドになります。