Есть ли способ получить сообщение об ошибке / предупреждении компилятора при удалении функции из протокола?
@protocol MyProtocol
- (void)foo;
- (void)bar;
@end
@interface MyClass : NSObject < MyProtocol >
@end
@implementation MyClass
// My Protocol implementation
- (void)foo {
NSLog(@"foo implementation.");
}
- (void)bar {
NSLog(@"foo implementation.");
}
@end
Теперь предположим, что я решил изменить MyProtocol
и удалите функцию foo
, Есть ли механизм, который выдаст мне ошибку / предупреждение компилятора, если я не удаляю реализацию foo (что-то вроде override
Ключевой эквивалент в C++)?
1 ответ
Если вы просто удалите метод из протокола, нет никакого способа получить какое-либо указание на то, что вы должны удалить соответствующий метод из любого соответствующего класса. Это потому, что нет способа узнать, что у данного класса просто есть метод с тем же именем.
Что вы можете сделать, это переименовать метод протокола, который вы хотите удалить. Дайте ему имя, которое гарантированно не существует в вашем коде.
Теперь попробуйте построить. Вы получите некоторые ошибки о несоответствии в любом классе, пытающемся соответствовать протоколу, потому что у него не будет недавно переименованного метода протокола.
После удаления метода из каждого из этих классов вы можете удалить переименованный метод из протокола.