OCMock目前不支持的原始参数宽松匹配。然而,我有我需要上OCMockObject
设置属性,这个属性被声明为copy
属性。因此它实现了- (id)copyWithZone:(NSZone *)zone
。 NSZone
被定义为typedef struct _NSZone NSZone
,并且因为它是一个结构,它是一个原始类型。因此,我得到的错误我该如何模拟一个NSZone?
Incompatible pointer types sending 'id' to parameter of type 'NSZone *' (aka 'struct _NSZone *')
在这条线:
[[mockObject expect] copyWithZone:[OCMArg any]];
是解决它的最好方法声明属性与retain
属性,而不是copy
?使用copy
的好处是该对象不可能被另一个对象修改。