То, что вы упустили, это то, как работают методы и селекторы.Двоеточие в определении метода является частью имени селектора.Например, эти три метода:
-(void)updateInterface;
-(void)handleSingleTap:(id)sender;
-(void)updateItemAtIndex:(NSInteger)integer animated:(BOOL)animated;
Имеет следующие полные имена селекторов:
updateUserInterface
handleSingleTap:
updateItemAtIndex:animated:
Имена должны всегда совпадать полностью.Включая двоеточия, которые, я должен еще раз подчеркнуть, являются частью имен.
Вы обращаетесь к этому:
[readerController handleSingleTap];
Не включает двоеточие в имени, и поэтому код делаетПредположение, что метод с этим определением существует, и пытается вызвать его:
-(id)handleSingleTap;
Поскольку он не существует, вы получаете исключение, и ваше приложение вылетает.
Если вы этого не сделаетеЕсли вы хотите отправить аргумент, вы должны иметь полное имя.Но может передавать аргумент, который можно игнорировать, например nil
, например:
[readerController handleSingleTap:nil];