我目前正在尝试使用GCC4.2(原始版本:4.0)编译OCMock并开始收到以下警告:
警告:传递参数1 'partialMockForObject:'来自distinct Objective-C类型
调用方法是:
- (void)forwardInvocationForRealObject:(NSInvocation *)anInvocation
{
// in here "self" is a reference to the real object, not the mock
OCPartialMockObject *mock = [OCPartialMockObject partialMockForObject:(id)self];
// ...
}
,被调用的方法是:
+ (id)partialMockForObject:(NSObject *)anObject;
使用强制类型转换为参数添加前缀可修复问题。我认为所有对象都是NSObject的子类,虽然转换是隐式的(超类替换:超类总是可以被它的任何子类替换)
答案 0 :(得分:2)
所有对象不一定来自NSObject。大多数Cocoa类都是(NSProxy是我头脑中唯一的例外),但如果你没有声明一个类是NSObject的后代,那么它就不会。可能是你忘了在声明无论发生在哪里?