gpt4 book ai didi

iphone - 误报 respondsToSelector with UIApplicationDelegate 导致 NSInvalidArgumentException

转载 作者:太空狗 更新时间:2023-10-30 03:35:16 24 4
gpt4 key购买 nike

简而言之,下面的代码调用父类中的一个现有选择器,然后给出一个 NSInvalidException:

- (void)applicationWillResignActive:(UIApplication *)application {
if ([super respondsToSelector:@selector(applicationWillResignActive:)])
{
[super applicationWillResignActive:application];
}

这给出了以下日志异常:

  • *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[aAppDelegate applicationDidEnterBackground:]:无法识别的选择器发送到实例 0x5b5d360”

详细说明...我有一个基本应用程序委托(delegate)(来 self 们的新公司库)声明为:

我有一个基础应用程序委托(delegate)类 BaseAppDelegate。它声明为:

@interface CoAppDelegate : NSObject <UIApplicationDelegate> 

它实现了:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
DebugLog(@"*** ACTIVE ****");
}

它没有实现 @selector(applicationWillResignActive:) - 或者至少我的意思是我没有专门为该方法写出代码。在 .h 或 .m 文件中找不到它。

我的应用有一个从 CoAppDelegate 继承的应用委托(delegate):

@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 声明响应者不存在 - 而且它不存在,所以这是抛出的正确异常。

我需要知道的是为什么当我期望看到否时 respondsToSelector 给出了是?我遗漏了什么微妙的东西?

最佳答案

你应该使用[self superclass]而不是[super class]:

[[self superclass] instancesRespondToSelector:@selector(method)]

关于iphone - 误报 respondsToSelector with UIApplicationDelegate 导致 NSInvalidArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com