Предупреждение: передача аргумента из отдельного типа Objective-C - PullRequest
1 голос
/ 04 октября 2009

Я сейчас пытаюсь скомпилировать OCMock с GCC4.2 (оригинал: 4.0) и начать получать следующее предупреждение:

предупреждение: передача аргумента 1 из partalMockForObject: от отличного Объектив-тип 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 Ответ

2 голосов
/ 04 октября 2009

Все объекты не обязательно происходят от NSObject. Большинство классов Какао есть (NSProxy - единственное исключение, которое встречается в моей голове), но если вы не объявите класс как происходящий от NSObject, это не произойдет. Может быть, вы забыли, что в декларации о том, где это происходит?

...