首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在actionForLayer中崩溃:forKey:

在actionForLayer中崩溃:forKey:
EN

Stack Overflow用户
提问于 2011-06-17 10:07:42
回答 2查看 4.2K关注 0票数 13

我有一个神秘的EXC_BAD_ACCESS当改变一些UILabel的框架。坠机是随机的,通常我得重复几分钟。

启用NSZombies以及其他内存调试标志(NSDebugEnabled、MallocStackLogging)没有帮助,崩溃仍然保持不透明:只是控制台中没有消息的BAD_ACCESS。目标看起来是正确的,并且是活着的,所以它看起来不像一个被释放的内存问题。

为了获得更多信息,我对UILabel进行了子类化,并重写了崩溃函数:

代码语言:javascript
复制
@implementation TestUILabel
- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
    return [super actionForLayer:layer forKey:event];
}
@end

它在超级程序的方法中崩溃,但在检查时一切似乎都是正确的(打印retainCount用于“self”和“layer”分别给出了3和2):

(gdb) po self < TestUILabel: 0x6ac2800;baseClass = UILabel;框架= (173 174;0);文本= '54平方米‘;不透明= NO;自动调整大小= LM+TM;autoresizesSubviews = NO;userInteractionEnabled = NO;动画={ position=< CABasicAnimation: 0xe07ba60>;};layer =< CALayer: 0xbf1b950>> (gdb) po事件 界 (gdb) po层

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-08 06:51:43

你可能已经查过了,但值得一试.

您确定没有做任何会影响后台线程中任何UI元素的操作吗?也许您正在做一些与此搜索相关的计算,并且它更改了某个视图的属性。

在我忘记了一个performSelectorOnMainThread:withObject:waitUntilDone:调用,然后在后台更改UI的情况下,我看到了他的这种情况。

票数 10
EN

Stack Overflow用户

发布于 2018-05-24 02:41:27

此崩溃具有似乎使用UIKit类或函数的非主线程。一般来说,只有从主线程使用UIKit才是安全的。从后台线程调用UIKit会导致不可预测的行为(比如崩溃!)。请检查您的所有代码(不在主线程上)是否已被Apple显式标记为在后台使用是安全的。

外部资源:

UIKit框架参考

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6384248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档