OCMockは現在、プリミティブ引数の緩いマッチングをサポートしていません。しかし、に設定する必要のあるプロパティがありOCMockObject、このプロパティはcopy属性で宣言されています。したがって、を実装し- (id)copyWithZone:(NSZone *)zoneます。NSZoneはとして定義されtypedef struct _NSZone NSZone、構造体であるため、プリミティブ型です。したがって、エラーが発生します
Incompatible pointer types sending 'id' to parameter of type 'NSZone *' (aka 'struct _NSZone *')
この行で:
[[mockObject expect] copyWithZone:[OCMArg any]];
retainこれを解決する最善の方法は、プロパティではなく属性を使用してプロパティを宣言することcopyですか?使用する利点はcopy、オブジェクトが別のオブジェクトによって変更される可能性がないことです。