单击SubView上的按钮时执行错误访问

时间:2012-06-19 07:12:03

标签: ios ios5 memory-management memory-leaks

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

-(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

我可以知道从其地址取消分配的实例吗?

2 个答案:

答案 0 :(得分:4)

我不得不初始化

ActivityViewController *activityViewController
头文件中的

并从.m文件中访问它。这解决了这个问题。

答案 1 :(得分:0)

由于您使用ARC,因此使用strong属性选项而不是MRC retain属性选项。 因此,当您撰写@property(strong,retain) UIButton *billingAddressChkBox;时,请移除retain,我相信它应该有效。

希望这有帮助!