• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - CATitledLayer 的间歇性 EXC_BAD_ACCESS 异常

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:31:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我遇到了一个应用程序时常崩溃的问题。下面的代码在 UIView 中,以 CATiledLayer 作为其支持层:

- (UIBezierPath *)path
{
    if(_path == nil){

        _path = [UIBezierPath bezierPath];
        CGFloat lineWidth = 5;
        [_path setLineWidth:lineWidth];
        [_path setLineJoinStyle:kCGLineJoinRound];
        [_path setLineCapStyle:kCGLineCapRound];       

        [_path moveToPoint:CGPointMake(100, 100)];      
        [_path addLineToPoint:CGPointMake(200,200)];
        [_path addLineToPoint:CGPointMake(150,200)];
        [_path addLineToPoint:CGPointMake(50,400)];
        _path closePath];

        return _path;
    }    
return _path;
}

- (void)drawRectCGRect)rect
{  
    [[UIColor colorWithRed:0.1 green:0.1 blue:1 alpha:0.45] setStroke];//sets stroke color in current context
    [self.path stroke];
}

我收到以下错误代码:

Single stepping until exit from function _ZN2CG4Path15apply_transformERK17CGAffineTransform, which has no line number information.

发生错误时似乎没有任何规律。它似乎会在某些时候发生滚动或缩放。有时,一旦我缩放/滚动,就会崩溃。有时我可以缩放和滚动一段时间,直到它崩溃。

我知道在 iOS4 之前 UIKit 不是线程安全的,不能与 CATiledLayers 一起使用。见 tech note我的问题(我认为)似乎是线程问题。肯定不能怪 UIKit 吗?



Best Answer-推荐答案


尝试将 path 属性设为 atomic

另外,您可能应该将 drawRect 修改为以下内容:

- (void)drawRectCGRect)rect
{  
    [[UIColor colorWithRed:0.1 green:0.1 blue:1 alpha:0.45] setStroke];//sets stroke color in current context
    @synchronized(self) {
        [self.path stroke];
    }
}

关于iphone - CATitledLayer 的间歇性 EXC_BAD_ACCESS 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423079/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap