Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS,已将无法识别的选择器发送到实例?_Ios_Iphone_Xib_Ibaction - Fatal编程技术网

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

iOS,已将无法识别的选择器发送到实例?,ios,iphone,xib,ibaction,Ios,Iphone,Xib,Ibaction,我有一个带有进口定制actionBar的主屏幕。我在一个单独的.xib文件中创建了这个actionBar,其中包含一个.m和.h文件 我在actionBar.m的viewDidLoad中做了一些图形设置,比如backgroundColor和其他一些东西 我在这个操作栏上也有一个按钮我用我通常链接按钮的方式链接了一个iAction 我将actionBar加载到主屏幕,如下所示: ActionBarWithLogoff *actionBar = [[ActionBarWithLogoff alloc

我有一个带有进口定制actionBar的主屏幕。我在一个单独的.xib文件中创建了这个actionBar,其中包含一个.m和.h文件

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

我在这个
操作栏上也有一个按钮
我用我通常链接按钮的方式链接了一个
iAction

我将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美孚DK[2954:60b]-[[UU NSArrayM] ActionBarLogoff::发送到实例0x1656d880的选择器无法识别 2014-01-27 13:52:21.858 GB_Mobil_DK[2954:60b]*终止应用程序到期 未捕获异常“NSInvalidArgumentException”,原因: '-[\uu NSArrayM ActionBarLogoff:]:无法识别的选择器已发送到 实例0x1656d880' *第一次抛出调用堆栈:(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:以未捕获终止 NSException类型的异常


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

您正在释放
actionBar
实例,并保留其
视图。若
actionBar
实例是按钮操作的响应者,则按钮单击消息将被发送到已删除实例。您应该保留
actionBar
实例。一种方法是将其设置为ivar或
retain
属性

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

编辑

宣布保留财产

@property (nonatomic, retain) ActionBarWithLogoff *actionBar;

只需声明为ivar

@interface YourViewController: UIViewController {
    ActionBarWithLogoff *actionBar;
}
dealoc
方法中

-(void) dealloc {
    //...

    [actionBar release];

    //...
}

希望有帮助

显示实际错误消息。检查按钮的出口方法名称和实际方法名称。可能两者都不同。是否使用ARC…。转到“断点导航器”,在面板底部单击“加号”-添加异常断点…-添加然后重复所有步骤,注意我们在您的代码中出现了错误。我正在使用MRC,请查看帖子中更新的完整错误消息,这样我就应该停止调用[actionBar release]?或者我需要将其更改为ells以保留它吗?@user2408952是的,您不应该像现在这样释放它。请看我的最新答案以获取建议。我通过将发布更改为保留来实现这一点。如果这不是正确的方法,请回复。如果是,那么非常感谢您的帮助。@user2408952不,这不是正确的方法。它会造成内存泄漏。您应该将
actionBar
声明为类中的
retain
-属性或实例变量。在类的
dealloc
方法中释放它。