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
是对象不可能被另一个对象修改。