Ошибка класса Objective-C class_conformsToProtocol ()?

Я обнаружил странное поведение в моем приложении iPhone Objective-C.

Я использую некоторый код для проверки объекта:

if (!class_conformsToProtocol([someVar someFunctionThatReturnsAClass], @protocol(MyProtocol)))
     [NSException raise:@"Invalid Argument" format:@"The variables returned by 'someFunctionThatReturnsAClass' Must conform to the 'myProtocol' protocol in this case."];

Как ни странно, когда у меня есть класс, который выглядит так:

@interface BaseClass : NSObject<MyProtocol>

...

@end

@interface SubClass : BaseClass

...

@end

И когда я вызываю этот фрагмент: class_conformsToProtocol ([SubClass class], @protocol (MyProtocol)) , он возвращает NO .

Кроме того, этот код не работает:

class_conformsToProtocol([NSString class], @protocol(NSObject)); // also returns NO

Хотя этот код возвращает YES :

[NSString conformsToProtocol:@protocol(NSObject)];

Есть ли что-то, чего мне не хватает в документации? Или это какая-то ошибка? (Я использую iOS 4.2, если это имеет значение).

11
задан Jacob Relkin 13 February 2011 в 08:31
поделиться