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

类的前项声明@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. Objective-C:三种文件导入的方式比较

    三种文件导入的方式比较:   类的前项声明@class.import.include:   1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...

  2. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

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

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

  4. 【转】ZYNQ中三种实现GPIO的方式

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/husipeng86/article/det ...

  5. 三种Singleton的实现方式

    来源:http://melin.iteye.com/blog/838258 三种Singleton的实现方式,一种是用大家熟悉的DCL,另外两种使用cas特性来实现. public class Laz ...

  6. Request三种获取数据的方式

    今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Req ...

  7. 三种root的修补方式

    三种root的修补方式 system/core/adb/abd.c adbd漏洞,请看abd.c的第917行/* then switch user and group to "shell&q ...

  8. 三种Tomcat集群方式的优缺点分析

    三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...

  9. python列表和字符串的三种逆序遍历方式

    python列表和字符串的三种逆序遍历方式 列表的逆序遍历 a = [1,3,6,8,9] print("通过下标逆序遍历1:") for i in a[::-1]: print( ...

随机推荐

  1. 模仿cocos2dx 风格用工厂方法,实现class A,不使用宏,

    class A { static A *create(); bool init(); }; A* A::create() { A *pRet=new A; if(pRet && pRe ...

  2. SQL Server性能优化(2)获取基本信息

    以下常用的SQL语句有利于我们分析数据库的基本信息,然后根据查询的结果进行优化. 1. 查看索引碎片     无论何时对基础数据执行插入.更新或删除操作,SQL Server 数据库引擎都会自动维护索 ...

  3. Posix线程编程指南(5) 杂项

    在Posix线程规范中还有几个辅助函数难以归类,暂且称其为杂项函数,主要包括pthread_self().pthread_equal()和pthread_once()三个,另外还有一个LinuxThr ...

  4. Ext通过后台校验字段是否重复

    话不多说,直接上代码: handlerRybh : function(textField) { Ext.Ajax.request({// ajax请求的方法 url : 'userManage/per ...

  5. 【BZOJ】【1025】【SCOI2009】游戏

    DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...

  6. 使用Ext.Net时,配置文件的最简单写法

    使用Ext.Net时,配置文件的最简单写法 <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配 ...

  7. set gameobject Icons by Script

    有很多时候我们需要在编辑器查看一个Gameobject的移动,有些人采用Gizoms类,可是如果不想用,可以使用U3D内置的Icon类. 但是如果想在脚本中设置而不是通过手动选择呢? Google之, ...

  8. 理解ASP.NET MVC Framework Action Filters

    原文:http://www.cnblogs.com/darkdawn/archive/2009/03/13/1410477.html 本指南主要解释action filters,action filt ...

  9. 7 天玩转 ASP.NET MVC — 第 7 天

    目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 今天是开心的一天.因为我们终于来到了系列学习的最后一节.我相信你喜欢之前的课程,并从中学到了许多. ...

  10. 【译】 沙箱中的间谍 - 可行的 JavaScript 高速缓存区攻击

    王龑 - MAY 27, 2015 原文连接 The Spy in the Sandbox – Practical Cache Attacks in Javascript 相关论文可在 https:/ ...