Есть ли способ получить сообщение об ошибке / предупреждении компилятора при удалении функции из протокола? - PullRequest
0 голосов
/ 18 мая 2018
@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 Ответ

0 голосов
/ 18 мая 2018

Если вы просто удалите метод из протокола, нет никакого способа получить какое-либо указание на то, что вы должны удалить соответствующий метод из любого соответствующего класса.Это потому, что нет способа узнать, что у данного класса просто есть метод с тем же именем.

Что вы можете сделать, это переименовать метод протокола, который вы хотите удалить.Дайте ему имя, которое гарантированно не существует в вашем коде.

Теперь попробуйте собрать.Вы получите некоторые ошибки о несоответствии в любом классе, пытающемся соответствовать протоколу, потому что у него не будет недавно переименованного метода протокола.

После удаления метода из каждого из этих классов вы можете удалитьметод переименован из протокола.

...