【问题标题】:Unrecognized selector sent to instance weirdness无法识别的选择器发送到实例怪异
【发布时间】:2013-10-28 11:35:44
【问题描述】:

这太奇怪了!它的东西很简单,这就是我无法理解的原因。下面显示了我的课程。

#import <UIKit/UIKit.h>

@interface LogInViewController : UIViewController
- (IBAction)loginButtonPressed:(id)sender;

@end

.

#import "LogInViewController.h"

@interface LogInViewController ()

@end

@implementation LogInViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


//

- (IBAction)loginButtonPressed:(id)sender
{
    NSLog(@"login Button Pressed");
}

每当我点击按钮时它会抛出这个?!

loginButtonPressed:]: 无法识别的选择器发送到实例 0x15e3bf60 2013-10-28 11:23:24.249 头痛 Mbl[1352:60b] * 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSSetM loginButtonPressed:]: 无法识别的选择器发送到实例 0x15e3bf60' * 首先抛出调用栈:

我已经检查过了,按钮正确地发送了“touch up inside to loginButtonPressed:”

帮助!,谢谢你:)

这是我如何将视图控制器附加到我的主屏幕

进口

@interface ViewController : UIViewController

@property (strong) IBOutlet UIView *loginView;

.

- (void)viewDidLoad
{

    LogInViewController *logIn = [[LogInViewController alloc] initWithNibName:@"LogInViewController" bundle:nil];
    [self.loginView addSubview:logIn.view];
    [self.loginView setClipsToBounds:YES];
}

【问题讨论】:

  • 你在使用 ARC 吗? .看看这个问题stackoverflow.com/questions/2455161/…
  • 也可以在您的按钮上查看它是否仅连接到一个IBAction。如果您更改了方法名称,它可能仍指向旧名称。
  • 请展示您为 LogInViewController 声明对象的代码
  • 我添加了上面的代码,显示我将笔尖附加到我的主视图控制器中的 uiview,谢谢
  • 我已经检查过按钮肯定连接到正确的方法:)

标签: ios objective-c exception uibutton unrecognized-selector


【解决方案1】:

看起来像内存问题。如果你使用 ARC,你应该保持对视图控制器的强烈引用。如果您使用手动内存管理,可能视图控制器已被过度释放。要查找问题,您可以将 NSZombieEnabled 标志添加到方案或将 Instruments 与 Zombie 一起使用。

【讨论】:

  • 您好,我正在使用 ARC,并且使用了对 uiview 的强引用,这就是您的意思。 iv 编辑上面的帖子以显示这一点,以及我如何设置主屏幕。谢谢
  • @Ryan 不,他的意思是保持对视图 controller 的强烈引用,即您在问题中显示的类。
【解决方案2】:

只是一个建议,但是您是否检查了 IB 中按钮的事件连接。愿您离开与另一个 VC 的连接,在该 VC 中您已删除操作方法。在控制台中检查 loginButtonPressed:]: 无法识别的选择器发送到实例 0x15e3bf60 什么是 0x15e3bf60 (po 0x15e3bf60)。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多