iOS,无法识别的选择器发送到实例?

前端之家收集整理的这篇文章主要介绍了iOS,无法识别的选择器发送到实例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有导入自定义actionBar的主屏幕.我在一个单独的.xib文件中创建了这个actionBar,其中包含.m和.h文件.

我在actionBar.m的viewDidLoad中做了一些图形设置,比如backgroundColor和其他一些东西.

我在这个actionBar上也有一个按钮,我通常用IBAction链接按钮的方式.

我将actionBar加载到我的主屏幕中,如下所示:

ActionBarWithlogoff *actionBar = [[ActionBarWithlogoff alloc] initWithNibName:@"ActionBarWithlogoff" bundle:nil];
[topBar addSubview:actionBar.view];
[actionBar release];

我的actionBar.h:

- (IBAction)ActionBarlogoff:(id)sender;

我的actionBars.m的方法

-(void) ActionBarlogoff:(UIButton *)sender
{
NSLog(@"!!!!!!!!!!ActionBarlogoff");
}

这是我的错误钢铁图片,当我点击按钮我得到以下错误

2014-01-27 13:52:21.856 GB_Mobil_DK[2954:60b] -[__NSArrayM
ActionBarlogoff:]: unrecognized selector sent to instance 0x1656d880
2014-01-27 13:52:21.858 GB_Mobil_DK[2954:60b] * Terminating app due
to uncaught exception ‘NSInvalidArgumentException’,reason:
‘-[__NSArrayM ActionBarlogoff:]: unrecognized selector sent to
instance 0x1656d880’
*
First throw call stack: (0x2f94be83 0x39ca86c7 0x2f94f7b7 0x2f94e0af 0x2f89cdc8 0x32104da3 0x32104d3f 0x32104d13 0x320f0743
0x3210475b 0x32104425 0x320ff451 0x320d4d79 0x320d3569 0x2f916f1f
0x2f9163e7 0x2f914bd7 0x2f87f471 0x2f87f253 0x345b92eb 0x32134845
0x97985 0x3a1a1ab7) libc++abi.dylib: terminating with uncaught
exception of type NSException

有谁能告诉我为什么?最重要的是能够帮我解决这个问题^^?

解决方法

您正在释放actionBar实例并保留其视图.如果actionBar实例响应按钮操作,则按钮单击消息将被发送到已删除的实例.您应该保留actionBar实例.一种方法是将其作为ivar或保留财产.

看起来您正在为自定义视图创建UIViewController.相反,您可以使用其XIB创建自定义UIView.

编辑

声明保留财产,

@property (nonatomic,retain) ActionBarWithlogoff *actionBar;

要么

简单地声明为ivar,

@interface YourViewController: UIViewController {
    ActionBarWithlogoff *actionBar;
}

在dealloc方法中,

-(void) dealloc {
    //...

    [actionBar release];

    //...
}

希望有所帮助!

猜你在找的iOS相关文章