Предупреждение Objective C предупреждения метода для назначенного инициализатора суперкласса '-init' не найден

Я убираю предупреждения в приложении и получаю это предупреждение дважды

Method override for the designated initializer of the superclass '-init' not found

для этой строки кода

@implementation AFNetworkReachabilityManager

и эта строка

@implementation AFURLConnectionOperation

Я довольно новичок в Objective-C и погуглил это предупреждение и просто не понял решения

Мой вопрос: как мне избавиться от этих предупреждений?

12 голосов | спросил user979331 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 23 Sep 2015 16:35:03 +0300 2015, 16:35:03

1 ответ


0

На форумах Apple

  

Правила для назначенных инициализаторов сложны, и я собираюсь отослать вас к документации для общего случая. Любопытно, что лучшим объяснением этого я считаю раздел «Инициализация» языка программирования Swift, потому что одни и те же понятия применимы как к Swift, так и к Objective-C.   В вашем конкретном случае вы должны переопределить -init и сделать так, чтобы он не работал во время выполнения. Вы также должны пометить его в своем заголовке с помощью NS_UNAVAILABLE, что позволит компилятору поймать это в типичном случае.   Вышеприведенное применимо, потому что ваш класс не может работать без модели, и, следовательно, вы не можете разумно реализовать -init любым полезным способом. Если бы вы могли, вы должны. Например, если вы создаете свой собственный строковый объект, имеет смысл реализовать -init, вызвав super и затем инициализировав строку в пустую строку.

В ваших .h файлах:

@interface MyClass : NSObject  
- (instancetype)init NS_UNAVAILABLE;  

@end  

В .m файлах:

@interface MyClass ()  
- (instancetype)init NS_DESIGNATED_INITIALIZER;  
@end  

@implementation MyClass  
 - (instancetype)init { @throw nil; }  

@end  
ответил BoilingLime 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 23 Sep 2015 16:42:15 +0300 2015, 16:42:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132