警告:从不同的Objective-C类型传递参数

时间:2009-10-04 09:06:01

标签: objective-c gcc compiler-errors compiler-warnings

我目前正在尝试使用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的子类,虽然转换是隐式的(超类替换:超类总是可以被它的任何子类替换)

1 个答案:

答案 0 :(得分:2)

所有对象不一定来自NSObject。大多数Cocoa类都是(NSProxy是我头脑中唯一的例外),但如果你没有声明一个类是NSObject的后代,那么它就不会。可能是你忘了在声明无论发生在哪里?