В настоящее время я пытаюсь скомпилировать OCMock с GCC4.2 (оригинал: 4.0) и получаю следующее предупреждение:
предупреждение: передача аргумента 1 'partialMockForObject:' из другого типа 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;
префикс аргумента с приведением к id устраняет проблему. Я думал, что все объекты являются подклассом NSObject, и хотя приведение будет неявным (замена суперкласса: суперкласс всегда можно заменить любым его дочерним классом)