#import和@class
2016-01-08 15:52
246 查看
1、#import的作用
#import "Person.h" 的作用是将整个头文件copy一份到其他文件里替换这行代码(#import "Person.h"),这个copy操作是在编译器链接时进行的。如果这个头文件之后有所修改,那么再编译的时候编译器会再执行一次copy替换操作,所有包含这个头文件的文件(很可能不止一个)都会再copy并替换掉之前的,这会使得编译很慢。
2、@class的作用
@class Person 就是告诉编译器,Person是个类,可以用它来定义对象(到时候别给我报错!)。至于这个类都有什么属性、方法,那你编译器不需要知道。
技巧:在.h文件里使用别人写的类时,用@class Person 来提示编译器Person就是个类,我要用它定义对象。因为.h文件中一般不需要知道属性和方法。如果今后Person.h修改了,那么包含该.h的你自己的类头文件是不用再copy替换的,只有包含该.h的你自己的.m文件需要重新替换它,减少了编译时的工作量。
在.m文件中使用别人写的类时则要使用#import "Person.h",因为.m中要用到这个类的属性和方法,所以编译器必须知道这些属性和方法。
注:如果你在.h文件里已经使用了#import "Person.h",那么在.m文件里就不需要再 #import "Person.h"了,因为自己写的本类的.h文件已经包含了Person类的详情。但是这个时候如果今后Person.h修改了,那么包含该.h的你自己的类头文件和.m文件都需要重新替换它,增加了编译器的工作量。
#import "Person.h" 的作用是将整个头文件copy一份到其他文件里替换这行代码(#import "Person.h"),这个copy操作是在编译器链接时进行的。如果这个头文件之后有所修改,那么再编译的时候编译器会再执行一次copy替换操作,所有包含这个头文件的文件(很可能不止一个)都会再copy并替换掉之前的,这会使得编译很慢。
2、@class的作用
@class Person 就是告诉编译器,Person是个类,可以用它来定义对象(到时候别给我报错!)。至于这个类都有什么属性、方法,那你编译器不需要知道。
技巧:在.h文件里使用别人写的类时,用@class Person 来提示编译器Person就是个类,我要用它定义对象。因为.h文件中一般不需要知道属性和方法。如果今后Person.h修改了,那么包含该.h的你自己的类头文件是不用再copy替换的,只有包含该.h的你自己的.m文件需要重新替换它,减少了编译时的工作量。
在.m文件中使用别人写的类时则要使用#import "Person.h",因为.m中要用到这个类的属性和方法,所以编译器必须知道这些属性和方法。
注:如果你在.h文件里已经使用了#import "Person.h",那么在.m文件里就不需要再 #import "Person.h"了,因为自己写的本类的.h文件已经包含了Person类的详情。但是这个时候如果今后Person.h修改了,那么包含该.h的你自己的类头文件和.m文件都需要重新替换它,增加了编译器的工作量。
相关文章推荐
- css3的书本翻页效果
- p2p网贷
- 【转】成为Java顶尖程序员 ,看这10本书就够了
- css省略号
- poj2393Yogurt factory(贪心-坑)
- glsl/es version number
- Maven导入Servlet和JSP jar包
- C# 启动停止SQLServer数据库服务器
- IOS 银行卡每输入4位自动加空格
- PDF转PPT方法
- The run destination "设备名称" is not valid for Running the scheme '项目名称'.
- 引入框架报_OBJC_CLASS_$_CTTelephonyNetworkInfo错误,需要引入CoreTelephony.framework框架
- 用800行代码做个行为树(Behavior Tree)的库(1)
- python3.5之mysql扩展
- 视频音量控制器UISlider
- Failed to sync Gradle Project "xxx"解决方案
- Redis学习记录之配置文件(三)
- <四> H264解码输出yuv文件
- 使用curl进行s3服务操作
- centos下搭建svn服务器端/客户端