一、三种文件导入的方式比较:
 

类的前项声明@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,禁止多线程。这就直接消除了数据操作过程中被被另一方篡改的可能性。如果不是多线程,一般就采用这种设置。
 
 
 

最新文章

  1. json与对象转化
  2. C#的一维数组和二维数组定义方式:
  3. VS2010链接TFS
  4. MVC文件夹
  5. JavaScript空判断
  6. 小谈-—ServletConfig对象和servletContext对象
  7. jsp+servlet实现模糊查询和分页效果
  8. 读书笔记-Software Testing(By Ron Patton)
  9. keepalived介绍及工作原理
  10. 盘点和反思在微信的阴影下艰难求生的移动端IM应用
  11. linux 下svn操作
  12. C/C++之全局、static对象/变量的初始化问题
  13. 专2-第二课 Eclipse开发环境搭建
  14. VSTO学习笔记
  15. 计算Python代码运行时间长度方法
  16. c# ComboBox绑定枚举
  17. 中文Appium API 文档
  18. eclipse 主题文件配置
  19. kuangbin带你飞 最短路 题解
  20. 25 python socket网络编程

热门文章

  1. apache与tomcat负载集群的3种方法
  2. UVALive - 6577 Binary Tree 递推+找规律
  3. spring--注入类型--构造方法(不常用)
  4. 双栈排序 noip2008
  5. angularJs 问题
  6. samba 常见问题
  7. 威胁远胜“心脏出血”?国外新爆Bash高危安全漏洞
  8. ios 5
  9. Mozilla推荐的CSS属性书写顺序及命名规则
  10. Css选择器的优先级