В моем коде есть следующее предупреждение компилятора:
Initializing 'MyClass *__strong' with an expression of incompatible type '__strong id<MyProtocol>'
У меня такой вопрос: почему предупреждение компилятора исчезает, если я удаляю протокол из категории?
Каккогда я заменяю
@interface MyClass (CategoryNameHere) <SomeOtherProtocol>
на
@interface MyClass (CategoryNameHere)
, я нашел минимальный фрагмент кода, который воспроизводит этот сценарий:
@interface MyWidget ()
@end
@protocol MyProtocol
@end
@protocol SomeOtherProtocol
@end
@interface MyClass <MyProtocol>
@end
@interface MyClass (CategoryNameHere) <SomeOtherProtocol>
@end
@implementation MyWidget
- (MyClass *)sampleMethod:(id<MyProtocol>)v {
MyClass *instance = v;
return instance;
}
@end
Предупреждение компиляторана строке, которая содержит
MyClass *instance = v;