码迷,mamicode.com
首页 > 移动开发 > 详细

iOS线程加锁

时间:2015-10-07 16:08:59      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

// 加锁

    @synchronized (self) {

        // 在同一时间,只能一个线程执行,但是很耗资源

        

    

    } // 解锁

 

 

关于加锁,这里有一个东西.关于这个语法:@property.每次我们定义 一个属性的时候,会首当其冲的写上nonatomic,这是为什么?请看下面解说:

nonatomic与atomic在@property中的不同:

都知道,这两个关键字代表的是同一个东西,只是代表的含义不同.是与线程有关的.

  nonatomic代表的是:线程是不安全的.

  atomic代表的是:线程是安全的.

那么,问题来了.安全与不安全的具体体现形式是什么呢?其实就是是否给这个属性的setter方法是否加锁.

  nonatomic代表的是:没有给这个属性的setter方法加锁,所以是不安全的.

  atomic代表的是:给这个属性的setter方法加锁,所以是安全的.

 

 

那么,问题又来了.在我们的iOS开发中,为什么要推荐使用nonatomic呢?

  这个问题要从资源的耗损说起.在iOS开发中,setter方法的调用是很频繁的.给setter方法加锁,是很耗资源的.所以在移动设备上,尽量使用nonatomic.在mac开发中通常是使用atomic.当然,在不在乎资源,而在乎安全问题的话,使用atomic也是没有问题的.

 

iOS线程加锁

标签:

原文地址:http://www.cnblogs.com/iOS771722918/p/4858720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!