很多类似的问题,但没有适用于我的解决方案。
我尝试编写一个简单的 FlipSideApp。只有两个视图,每个视图都有一个按钮 (flipBtn | flopBtn) 来呈现另一个视图,反之亦然。
flip
在第一个视图上工作正常。flop
另一种观点是导致
unrecognized selector sent to instance 0x6c3adf0
.
调用[self dismissViewControllerAnimated:YES completion:nil];
文件FlipSide.m后应用程序崩溃(参见下面的代码)。0x6c3adf0
在这种情况下,当前地址在哪里是self
一个实例FlipSide : UIViewController
。
所以我认为错误消息中提到的无法识别的选择器是dismissViewControllerAnimated:completion
-method。
在输入 Xcode 的 CodeSense 时“推荐”该方法。
根据UIViewController Class Reference,此方法在 iOS 5.0 SDK 中是已知的。
我的部署目标是 5.0,设备 iPhone,基础 SDK iOS 5.0,架构标准 (arm7)。
为所有异常设置符号断点后,调试器在主函数中的 UIApplicationMain 处停止。这没什么能给我提示的。
僵尸对象已启用。即使我认为内存泄漏不是这里的问题。
我该怎么做才能使选择器被识别?
文件:“ AppDelegate.m ”
#import "FirstViewController.h"
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[[UIWindow alloc]
initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
UIViewController *viewController1 = [[[FirstViewController alloc]
initWithNibName:@"FirstViewController" bundle:nil] autorelease];
self.window.rootViewController = viewController1;
[self.window makeKeyAndVisible];
return YES;
}
文件:“ FirstViewController.h ”
@interface FirstViewController : UIViewController
- (IBAction)flipBtn:(id)sender;
@end
文件:“ FirstViewController.m ”
…
- (IBAction)flipBtn:(id)sender {
NSLog(@"%s -- reached --", __PRETTY_FUNCTION__);
FlipSide* flipSide = [[FlipSide alloc] initWithNibName:@"FLipSide" bundle:nil];
[self presentViewController:flipSide animated:YES completion:nil];
NSLog(@"%s -- done --", __PRETTY_FUNCTION__);
}
文件:“ FlipSide.h ”
@interface FlipSide : UIViewController
- (IBAction)flopBtn:(id)sender;
@end
文件:“ FlipSide.m ”
#import "FlipSide.h"
- (IBAction)flopBtn:(id)sender {
NSLog(@"%s -- reached --", __PRETTY_FUNCTION__);
NSLog(@"self address is: %@", self);
// // // ??? unrecognized selector sent to instance ???
[self dismissViewControllerAnimated:YES completion:nil]; // <--
NSLog(@"%s -- done --", __PRETTY_FUNCTION__);
}
控制台输出为:
-[FirstViewController flipBtn:] -- reached --
-[FirstViewController flipBtn:] -- done --
-[FLipSide flopBtn:] -- reached --
self address is: <FLipSide 0x6c3adf0>
-[FLipSide flopBtn:] -- done --
-[FLipSide flopBtn:]: unrecognized selector sent to instance 0x6c3adf0