containsObjectはNSArrayの要素のisEqualメソッドを使って同じオブジェクトかどうかを判定しているので、例えばNSNumberオブジェクトが要素の場合は正しく判定できない。具体的には以下のように想定と違う動作になる。
NSArray *ary = @[@1]; [ary containsObject:@1]; // #=>NOを返す
これはNSNumberのisEqualがポインタ比較をしているため。同じ値かどうかはisEqualNumberで判定する。
NSNumberが要素の場合は自分でcontainsObjectを実装しないといけない。
独自のオブジェクトをcontainsObjectで判別できるようにする。 - 絶品ゆどうふのタレ