单击子视图上的按钮时执行错误访问

Posted

技术标签:

【中文标题】单击子视图上的按钮时执行错误访问【英文标题】:Exec Bad Access when clicking a button on SubView 【发布时间】:2012-06-19 07:12:02 【问题描述】:

我有一个主视图,我使用以下代码向其中添加了一个子视图:

-(IBAction)launchPage:(id) sender

    ActivityViewController *activityViewController = [[ActivityViewController alloc] initWithNibName:@"ActivityViewController" bundle:nil];
    activityViewController.view.frame = CGRectMake(183, 104, 841, 573);
    activityViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"activity_bckgrnd.png"]];
    [self.view addSubview:activityViewController.view];    

我正在尝试向其中添加按钮事件的此 xib 文件上有按钮。但是当我在分配IBAction 后单击按钮时,我在

处收到 EXEC BAD ACCESS 错误
int main(int argc, char *argv[])

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

谁能告诉我错误可能是什么。我已经为项目启用了 ARC。

在我添加为子视图的视图控制器的 .h 文件中,我已声明

@property(strong,retain) UIButton *billingAddressChkBox;

在 .m 文件中,IBAction 看起来像

- (IBAction)checkboxButton:(id)sender

if (checkboxSelected == 0)
    [billingAddressChkBox setSelected:YES];
    checkboxSelected = 1;

 else 
    [billingAddressChkBox setSelected:NO];
    checkboxSelected = 0;

我已启用僵尸并收到以下消息。

message sent to deallocated instance

我可以知道哪个实例正在从其地址中释放吗?

【问题讨论】:

是的。我正在使用 ARC,因为我需要 5.0 及更高版本的项目 调试的时候,能不能逐行单步执行launchPage方法,看看哪一行出现EXC_BAD_ACCESS错误? 发布您将事件添加到按钮的代码 在调试时它不会进入我与 IBAction 链接的方法中。当我单击按钮时,错误就会发生。 raywenderlich.com/10209/my-app-crashed-now-what-part-1 和 raywenderlich.com/10505/my-app-crashed-now-what-part-2 该教程帮助我解决了许多与调试相关的问题 【参考方案1】:

我只需要初始化

ActivityViewController *activityViewController

在头文件中并从 .m 文件中访问它。这样就解决了问题。

【讨论】:

没错。它帮助到我。也许是因为 ARC,所以我们需要创建一个 Controller 作为属性 太棒了!! +1 ....但是谁能告诉我为什么会这样?为什么我们不能让它成为本地...。为什么我们需要在 .h 文件中声明它? :-o【参考方案2】:

由于您使用的是 ARC,因此您使用 strong 属性选项而不是 MRC retain 属性选项。 所以当你写@property(strong,retain) UIButton *billingAddressChkBox;时,去掉retain,我相信它应该可以工作。

希望这会有所帮助!

【讨论】:

以上是关于单击子视图上的按钮时执行错误访问的主要内容,如果未能解决你的问题,请参考以下文章

模型在按钮单击 ASP.NET MVC 5 时为空

通过单击 UICollectionCell 上的按钮执行 segue

移动子视图 - 偏移量错误,但视觉上正确?

单击第二个活动上的按钮在视图上执行“单击”或“滚动到”时出错

在执行功能时单击导航控制器上的后退按钮时应用程序崩溃

可以在角度调用父组件功能时单击子组件上的任何按钮? [关闭]