您现在的位置是:首页 > 文章详情

Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

日期:2017-05-27点击:453
一、三种文件导入的方式比较:
 

类的前项声明@class、import、include:

1、采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告你,现在你就可以直接使用它,节约程序编译时间;
 
2、采用import方式,能避免重复导入同一类,它导入的不但这个类的所有的内容,而且使用它之前,编译器必须先对类的所有内容走一遍,就是先做预编译处理,这样比较耗费程序编译的时间。
 
3、采用include方式,不能避免重复导入的问题,但是它用在C/C++的代码编写中,因为#ifndef,#define,#endif这个是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C/C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式
 
说明:在OC代码编写时,如果在一个类声明文件.h中,需要另一个类时,使用前项声明@class类名的方式是最好的选择,因为它省略了代码编译的时间,提高了效率;但是在实现文件.m文件中必须要用import方式,因为实现文件中要用到类的实例变量和方法,因此编译器必须先提前对类的内容做预编译处理。
 
 
二、atomic和nonatomic的区别:

atomic: 设置成员变量的@property属性时,默认为atomic,提供多线程安全。因为多线程的缘故,所有的对象在操作成员变量时都是同步的,因此,为了防止一个对象在操作数据时还没有结束就被另一个对象抢走进行篡改,atomic为此提供了多线程安全机制,采用同步加锁的方式,来控制进程的归属权。
     
即:
        {lock} //第一个对象获取操作数据后,给自己的进程加锁,别人在我没有释放锁之前就无法再去抢夺了。
                if (property != newValue) { 
                 [property release]; 
                 property = [newValue retain]; 
                 }
        {unlock}//该对象操作完数据后,就释放了同步锁,别人就可以获取这个数据进行自己的操作了。
 
说明:锁必须是唯一的。
 
nonatomic: 设置成员变量的@property属性时,设置nonatomic,禁止多线程。这就直接消除了数据操作过程中被被另一方篡改的可能性。如果不是多线程,一般就采用这种设置。
 
 
 
程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  Objective-C

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4887943.html,如需转载请自行联系原作者
原文链接:https://yq.aliyun.com/articles/366141
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章