Короче говоря, следующий код вызывает существующий селектор в суперклассе, а затем выдает NSInvalidException:
- (void)applicationWillResignActive:(UIApplication *)application {
if ([super respondsToSelector:@selector(applicationWillResignActive:)])
{
[super applicationWillResignActive:application];
}
Это дает следующее исключение журнала:
- *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [aAppDelegate applicationDidEnterBackground:]: нераспознанный селектор, отправленный экземпляру 0x5b5d360'
Для уточнения ... У меня есть базаделегат приложения (из нашей новой библиотеки компании), объявленный как:
У меня есть базовый класс делегата приложения, BaseAppDelegate.Он объявлен как:
@interface CoAppDelegate : NSObject <UIApplicationDelegate>
Он реализует:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
DebugLog(@"*** ACTIVE ****");
}
Он не реализует @selector (applicationWillResignActive :) - или, по крайней мере, я имею в виду, что я специально не написалкод для этого метода.Его нельзя найти в файле .h или .m.
У моего приложения есть делегат приложения, который наследуется от CoAppDelegate как:
@interface aAppDelegate : CoAppDelegate <UIApplicationDelegate>
Я реализую оба вышеупомянутых метода как:
- (void)applicationWillResignActive:(UIApplication *)application {
if ([super respondsToSelector:@selector(applicationWillResignActive:)])
{
[super applicationWillResignActive:application];
}
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
if ([super respondsToSelector:@selector(applicationDidBecomeActive:)])
{
[super applicationDidBecomeActive:application];
}
}
Когда приложение запускается, я получаю отладочный вывод "*** ACTIVE ****" - как и должно быть.
Когда я отправляю свое приложение в фоновый режим, яполучите это NSInvalidArgumentException, утверждающее, что ответчик не существует - и он не существует, поэтому это правильное исключение, которое нужно выкинуть.
Что мне нужно знать, так это то, почему responsedsToSelector выдает YES, когда я ожидаю увидетьНЕТ?Что это за тонкая вещь, которую мне не хватает?