简短描述:doesNotRecognizeSelector
在对肯定具有此方法的对象调用方法时出现错误,并且在调用respondsToSelector
.
这是一个非常奇怪的情况,我不明白它是怎么回事:)。我在一些用户设备的日志中看到了这个错误,但不是在所有设备上。我无法在自己的设备上重复此操作。
我试图弄清楚它是如何发生的,并增加了条件,respondsToSelector
但问题又发生了。
下面的一些代码。希望能帮助到你
1)我viewController
反对AppDelegate
。
@interface AppDelegate : NSObject <UIApplicationDelegate> {
}
@property (nonatomic, retain) AdRootViewController *viewController;
...
@end
@implementation AppDelegate
@synthesize viewController;
...
@end
2)在其他类中,我试图获取此对象并调用其方法之一。但随叫随到,一切都因错误而[viewController showBanner]
失败。doesNotRecognizeSelector
- (void) onEnterTransitionDidFinish {
[super onEnterTransitionDidFinish];
AdRootViewController *viewController = [(AppDelegate *)[[UIApplication sharedApplication] delegate] viewController];
if (viewController != nil && [viewController respondsToSelector:@selector(showBanner)]) {
[viewController showBanner];
}
}
3)AdRootViewController
有这个方法,它在接口中声明。
@interface AdRootViewController : UIViewController {
}
- (void)showBanner;
...
@end
@implementation AdRootViewController
...
- (void)showBanner
{
adBannerViewIsVisible = YES;
...
}
...
@end
失败的代码字符串是[viewController showBanner]
.
错误日志如下所示:
1 CoreFoundation __exceptionPreprocess + 1245624
2 libobjc.A.dylib objc_exception_throw + 34136
3 CoreFoundation -[NSObject(NSObject) doesNotRecognizeSelector:] + 1274468
4 CoreFoundation ___forwarding___ + 1262188
5 CoreFoundation _CF_forwarding_prep_0 + 186376
6 <project_id> 4296487336 + 487848
...