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

类的前项声明@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:三种文件导入的方式以及atomic和nonatomic的区别相关推荐

  1. ssm上传文件进度条_ssm学习笔记-三种文件上传方式

    首先需要引入commons-fileupload commons-fileupload commons-fileupload 1.3.3 MultipartFile方式 示例代码: @RequestM ...

  2. swift调用oc_OC与Swift混编,三种场景的实现方式

    多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单 第一种场景,App中实现混编 创建桥接文件*.h 新建一个桥接文件,New File 选择 Heade ...

  3. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

  4. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  5. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  6. vue,js,html三种文件之间是怎样的关系?

    vue,js,html三种文件之间是怎样的关系? 比如说,我创建一个js文件,vue实例是在js中创建,component组件也是在js中注册, 然后我去html中导入这个JS,这个时候我就可以在ht ...

  7. Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例

    Linux世界的三种压缩解压方式,zip/unzip方式压缩解压.tar方式压缩解压.jar方式压缩解压暨shopt extglob反选示例 zip/unzip方式.tar方式压缩解压是Linux中的 ...

  8. CI框架的三种设置cookie的方式

    [php] view plaincopyprint? //第一种设置cookie的方式:采用php原生态的方法设置的cookie的值 setcookie("user_id",$us ...

  9. Python中的urllib,urllib三种不同的请求方式

    1.urllib获取服务器的资源 自定义爬虫的重要组件 获取百度首页的资源: #3.x的标准写法 import urllib.request import urllib.parse#百度的首页 fro ...

最新文章

  1. java swt 双屏_Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
  2. 在线apt-get安装mysql_Linux Debain 通过apt-get 方式快速安装Mysql
  3. 如何将图片序列化_如何将图片文字转化为Word文档?
  4. 知乎云敲钟、比特币可购买特斯拉、用户隐私收集新规五一生效、 软件疯长等|Decode the Week...
  5. Redis 6.0 如何实现大幅度的性能提升?
  6. 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框
  7. WebAPi添加常用扩展方法及思维发散
  8. 安装Bootstrap3源码版本
  9. 作为测试人员,这些工具不会真不行
  10. pytorch view()函数
  11. 机敏问答[博弈][0] #20210628
  12. 计算机内存的存储原理,存储器原理
  13. 双线性映射(Bilinear Maps)实现(有限域、循环群)
  14. powerdesigner 显示窗口小工具栏
  15. PHP算法之斗牛游戏牛型判断
  16. C++日志操作开源函数库之Google-glog【Caffe源代码静态库封装--------关键错误点解决必备参考资料】
  17. 员工离职率高如何解决?
  18. lokohelp康复机器人_Lokohelp康复机器人在脑卒中偏瘫患者下肢运动功能恢复中的应用...
  19. pandas练习_同期群分析(Cohort Analysis)
  20. win10切换输入法快捷键_Win10发布四年,这30个技巧还有很多人不知道!

热门文章

  1. Java基础:继承、多态、抽象、接口
  2. windows上部署nginx---nginx启动
  3. logincontroller.java_使用HuTool工具类,实现登录验证码
  4. 信息论与编码_哈夫曼编码
  5. 学计算机科学与技术考研考哪些专业课程,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  6. mysql 工具_MySQL压力测试工具,值得收藏
  7. taro引入f2图表_Package - taro-f2
  8. ue4加载本地版本_【虚幻4】创建本地数据库
  9. java logic_Java Logic总结2
  10. python ctypes实现api测试_Python与C之间的相互调用(Python C API及Python ctypes库)