iOS Subview 按钮导致应用程序崩溃
Posted
技术标签:
【中文标题】iOS Subview 按钮导致应用程序崩溃【英文标题】:iOS Subview button causing application to crash 【发布时间】:2013-06-07 13:57:25 【问题描述】:我在主视图中添加了一个子视图,子视图上有一个按钮,但是当我选择子视图上的按钮时,应用程序崩溃并以绿色突出显示以下内容:
Thread 1:EXC_BAD_ACCESS (code=1), address=0xf0000008
子视图有自己的viewcontroller和xib文件。
这是我使用的一些代码:
子视图.h
- (IBAction)setDummyTime:(id)sender;
主视图.m
PickupTimeViewController *pickupTimeView = [[PickupTimeViewController alloc]init];
[selectedView addSubview:pickupTimeView.view];
谢谢
【问题讨论】:
如果您不将其保留在property
中,则会发生这种情况。
你能发布一些添加按钮和子视图的代码吗?
听起来它已经在你身上释放了。
【参考方案1】:
听起来它已经在你身上释放了。
尝试打开僵尸模式,再次使应用程序崩溃,看看它是否指向您正在发生的事情,它会告诉您释放后哪个对象正在尝试做某事。
Xcode -> 点击你的方案 -> 编辑方案 -> 运行 -> 诊断 -> 勾选启用僵尸对象
要尝试的另一件事是在调试区域查看您的 subView,这会告诉您您的 subView 何时发布。
Example of setting watch
另外,如果您还没有尝试过,请尝试保持对子视图的强/保留引用。
如果你不能让它工作发布你创建视图的代码。
编辑: 在.h
@property (nonatomic, strong) PickupTimeViewController *pickupTimeView;
在.m
self.pickupTimeView = [[PickupTimeViewController alloc]init];
[selectedView addChildViewController:self.pickupTimeView]; // (i0S5+ only) if the view you add to is a view controller if not use self otherwise.
[selectedView addSubview:pickupTimeView.view];
祝你好运, BooRanger
【讨论】:
我启用了 Zombie Objects 并且日志说:“消息发送到释放的实例 0x580...” 这是我使用的一些代码 Subview.h - (IBAction)setDummyTime:(id)sender;主视图.m PickupTimeViewController *pickupTimeView = [[PickupTimeViewController alloc]init]; [selectedView addSubview:pickupTimeView.view]; 基本上在某个你不关注对象的地方,尝试 po 内存地址,看看它是什么。 PickingTimeViewController 应该作为子项添加 [self addChildViewController:] 但我不认为就是这样,只有 ios5 了。还值得设置一个属性并尝试 self.pickupTimeController = ... 谢谢,[self addChildViewController:...] 完成了这项工作,只是在我添加子视图之前添加了该行并且它完成了工作...添加了子视图但它的控制器被释放了那是我的问题。以上是关于iOS Subview 按钮导致应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
重新启动活动时,Android Wear 上的融合位置提供程序会导致崩溃