gpt4 book ai didi

ios - removeFromSuperview 随机崩溃

转载 作者:行者123 更新时间:2023-12-01 19:49:05 34 4
gpt4 key购买 nike

我不知道如何描述正常场景,调用removeFromSuperview时会导致0.3%崩溃。

这是跟踪:

Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x43746553
Crashed Thread: 0
0 libobjc.A.dylib 0x000000019340fbd0 objc_msgSend + 16
1 UIKit 0x000000018771f0e8 ___UIViewWillBeRemovedFromSuperview + 404
2 UIKit 0x0000000187452c0c -[UIView(Hierarchy) removeFromSuperview] + 108
...

所有代码是:

[_control removeFromSuperview];
_control = nil;

我说的是实话

1.在主线程中调用。

2.我调试我的应用程序并且从未遇到崩溃。

3.类(class)是ARC。

希望尽快有消息。

<小时/>

2016.09.02

在我尝试用这些保护后,我再次遇到了它

if(_control && _control.superview) {
[_control removeFromSuperview];
_control = nil;
}

任何建议都会受到赞赏,因为我完全被难住了。

最佳答案

我想你的 control 对象属于 UIViewController 所以当你调用 self.control_control 你实际上调用yourViewController.control。但是,如果您尝试调用 self.control 而您的 UIViewController 已经被释放(它不再存在),这将导致崩溃。

您可以尝试使用对 Controller 的引用来调用self.control:

__weak MyObject *weakSelf = self;
[weakSelf.control removeFromSuperview];
weakSelf.control = nil;

调用 weakSelf.control 此处不保留任何引用,这意味着当您的 UIViewController 被释放时,您的 control 也将被释放所以这不会再导致崩溃。

这可能不是问题的实际原因,但有可能。

关于ios - removeFromSuperview 随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38693576/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com