点击按钮时出现 iOS EXC_BAD_ACCESS 错误

标签 ios objective-c uibutton target-action

我有一个 View Controller (vc1),它使用另一个类来获取 UI 元素。 因此 vc1 的 View 将另一个 View 设置为 subview ,该 View 从名为 Layout 的类返回。 从类 Layout 返回的 View 包含一个 UIbutton。 在 Layout 类中,我有以下代码:

[btn addTarget:self action:@selector(button_clicked:) forControlEvents:UIControlEventTouchUpInside];

然后在同一个类(Layout)中我也声明了方法button_clicked:

- (void)button_clicked:(id)sender {
    NSLog(@"btn clickd");
}

但是,当我点击按钮时,出现了错误。我在调试区域看不到任何错误消息,但 Xcode 的状态看起来不太好。模拟器失去焦点,Xcode 出现了一个文件(我猜是 AppDelegate.m),其中包含以下行:

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

用绿色突出显示。 此外,在代码中我看到消息:

线程 1:EXC_BAD_ACCESS(code=2, address=0x9)

有什么问题吗?我也担心 vc1 应该管理按钮点击,所以我认为最好将方法放在 vc1 中。你不这么认为吗?

最佳答案

您的描述表明,您设置为按钮目标的 Layout 实例在您按下按钮之前被释放,因此,当您按下按钮时,您将使用无效指针。

检查正在使用的 Layout 实例的保留情况,并确保它被保留(至少保留它作为按钮操作目标的时间)。

关于点击按钮时出现 iOS EXC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877786/

相关文章:

iOS 一键两个标签

ios - Tableview 数组未在 iOS Swift 中正确加载?

ios - View 的颜色和导航栏的颜色

ios - 配置ios应用程序: Programaticall configuration of ios apps for social login rather than using info. plist

ios - uinavigationcontroller 在 iOS 中恢复状态时失去色彩

ios - 从 Swift 调用 Objective-C 委托(delegate)的方法

Ios Swift 2 为选择器传递第二个参数

iphone - ios:在 UIButton 中以编程方式编辑的内容居中

php - 带上标 PHP 的 Excel 导入

iphone - 获取应用程序数据文件的最后文件修改日期?