单击子视图上的按钮时执行错误访问
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
后单击按钮时,我在
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
,我相信它应该可以工作。
希望这会有所帮助!
【讨论】:
以上是关于单击子视图上的按钮时执行错误访问的主要内容,如果未能解决你的问题,请参考以下文章
通过单击 UICollectionCell 上的按钮执行 segue