Это не фактическое сообщение об ошибке XCode, это предупреждение, которое преследует меня за
долго. Я не нашел способа удалить его, и думаю, что, возможно, перешагнул какое-то неписаное правило соглашения об именах.
Если я создаю класс, чаще всего расширяющий NSObject, единственная цель которого состоит в том, чтобы выполнить какую-то задачу и отчитаться, когда у него есть данные, я часто даю ему удобный конструктор, такой как "initWithDelegate".
Первый раз, когда я сделал это в моем текущем проекте, был класс под названием ISWebservice
, который имеет такой протокол:
@protocol ISWebserviceDelegate
@optional
- (void) serviceFailed:(NSError*) error;
- (void) serviceSuccess:(NSArray*) data;
@required
@end
Объявлено в моем интерфейсе ISWebservice.h, прямо под моими инструкциями импорта.
У меня есть другие классы, которые используют вспомогательный конструктор с именем "initWithDelegate".
Например. «InternetConnectionLost.h», этот класс, однако, не имеет своих методов как необязательных, в объявлении нет тегов @optional @required, т. Е. Все они обязательны.
Теперь мое предупреждение появляется каждый раз, когда я создаю экземпляр одного из этих Классов с помощью удобных конструкторов, написанных позже, чем ISWebservice, поэтому при использовании класса "InternetConnectionLost", даже если весь класс, владеющий объектом "InternetConnectionLost", не имеет ничего общего с класс «ISWebservice», нет импорта, вызываются методы, нет ничего, выводится предупреждение: ClassOwningInternetConnectionLost 'не реализует протокол ISWebserviceDelegate
Я ничего не сломал, не рухнул во время выполнения или не причинил мне вреда, но он начал беспокоить меня, когда я близок к выпуску. Кроме того, поскольку несколько классов используют имя конструктора initWithDelegate, у меня есть 18 из этих предупреждений в моих результатах сборки, и я не уверен, что сделал что-то не так, будучи довольно новым на этом языке.
Надеюсь, кто-то может пролить немного света на это предупреждение, спасибо:)