×

浅谈OC线程安全

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-09-25

分享资料个

今天去网易面试,面试官出了一道面试题,下面代码会发生什么问题?

@property (nonatomic, strong) NSString *target;

//。。.。

dispatch_queue_t queue = dispatch_queue_create( “parallel” , DISPATCH_QUEUE_CONCURRENT);

for (int i = 0; i 《 1000000 ; i++) {

dispatch_async(queue, ^{

self.target = [NSString stringWithFormat:@ “ksddkjalkjd%d” ,i];

});

}

当时我把自定义的队列看成了串行队列,然后回答:“没错呀”。后来一运行崩溃了……

面试后,我就仔细回想,敲了Demo,看看崩溃原因是啥。

正好试试小伙伴给我介绍的调试野指针的方法,XCode7以上才有的Address Sanitizer。

打开后发现是经典的EXC_BAD_ACCESS错误,以我浅薄的经验来看,这种一般是对一个已释放的内存的对象再次发送消息出现的。

屏幕快照 2017-08-25 上午1.55.50

再看看崩溃堆栈

浅谈OC线程安全

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !