В следующем коде
id<SwiftProtocol> anotherInstanceAsProtocol = [[SomeObjectiveCClassImplementingOBJCSwiftProtocol alloc] init];
[anotherInstanceAsProtocol isKindOfClass:[SomeObjectiveCClassImplementingOBJCSwiftProtocol class]];
я получаю предупреждение "Нет известного метода экземпляра для селектора" isKindOfClass: '"
Если я изменю последнюю строку на
[(id)anotherInstanceAsProtocol isKindOfClass:[SomeObjectiveCClassImplementingOBJCSwiftProtocol class]]
Работает отлично.
Это также работает, если я присваиваю NSObject<SwiftProtocol>
вместо id<SwiftProtocol>
, но я думаю, что ни того, ни другого не нужно.
Почему этот бросок необходим?