gpt4 book ai didi

objective-c - `unrecognized selector sent to instance ` 发送 `dismissViewControllerAnimated:completion` 到 UIViewController 后

转载 作者:行者123 更新时间:2023-12-04 06:05:02 24 4
gpt4 key购买 nike

许多类似的问题,但没有适用于我的情况的解决方案。

我尝试编写一个简单的 FlipSideApp。只有两个 View ,每个 View 都有一个按钮 (flipBtn | flopBtn) 来呈现另一个 View ,反之亦然。flip在第一个 View 上工作正常。 flop另一种观点导致unrecognized selector sent to instance 0x6c3adf0 .

调用 [self dismissViewControllerAnimated:YES completion:nil]; 后应用程序崩溃在文件中 FlipSide.m (见下面的代码)。哪里0x6c3adf0self的当前地址这是 FlipSide : UIViewController 的一个实例在这种情况下。

所以我认为错误信息中提到的无法识别的选择器是dismissViewControllerAnimated:completion -方法。
在键入 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

最佳答案

我收到了 解决方案 我!

知道它的错误消息是有道理的:
答案在于使用的 XIB 文件。

经验法则:
通过右键单击或“ctrl”+单击来检查 InterfaceBuilder 中的 GUI 元素,确保它们所有发送的事件都连接到现有方法!

如果不是这种情况instance表示 GUI 元素获取 sent一种unrecognized selector表示在 InterfaceBuilder 中连接到它的不存在的方法。 ;-)

请注意,一个事件可以连接到多个方法。如果甚至没有定义其中之一(不再定义),您就会收到该错误。
如果您手动删除、重命名或更改方法的签名,请记住这一点。以前建立的连接可能仍然存在。

关于objective-c - `unrecognized selector sent to instance <OBJ_ADR>` 发送 `dismissViewControllerAnimated:completion` 到 UIViewController 后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467779/

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