1

我目前正在尝试使用 GCC4.2(原始:4.0)编译 OCMock 并开始收到以下警告:

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

调用方法是:

- (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;

使用强制转换为 id 为参数添加前缀可以解决问题。我认为所有对象都是 NSObject 的子类,尽管强制转换是隐式的(超类替换:超类总是可以被它的任何子类替换)

4

1 回答 1

2

所有对象都不一定是 NSObject 的后代。大多数 Cocoa 类是(NSProxy 是我脑海中唯一出现的例外),但如果你不声明一个类是从 NSObject 继承的,它就不会。会不会是您在声明发生这种情况的地方忘记了这一点?

于 2009-10-04T09:10:57.123 回答