黑马程序员—IOS加强视频—@Class
来源:互联网 发布:长尾词霸屏软件 编辑:程序博客网 时间:2024/06/06 07:43
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
#import比起#include的好处就是不会引起交叉编译
在 Objective-C中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import
确定一个文件只能被导入一次,这使你在递归包含中不会出现问题
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
@class就是告诉编译器有这么一个类,至于类的定义是啥不知道
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你;
在头文件中,一般只需要知道被引用的类的名称就可以了,不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称,而在类的实现部分,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次被引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
- 黑马程序员—IOS加强视频—@Class
- 黑马程序员—IOS加强视频—oc内存管理
- 黑马程序员—IOS加强视频—@property
- 黑马程序员—IOS加强视频—循环引用实例
- 黑马程序员—IOS加强视频—@autorelease
- 黑马程序员—IOS加强视频—分类
- 黑马程序员—IOS加强视频—@description方法
- 黑马程序员—IOS加强视频—@block
- 黑马程序员—IOS加强视频—foundation框架
- 黑马程序员—IOS加强视频—利用协议实现代理模式
- 黑马程序员 — 基础加强
- 黑马程序员——Java语言加强部分——反射之Class类
- 黑马程序员——基础加强---反射机制-认识Class类
- 黑马程序员——java加强学习
- 黑马程序员——WinForm加强
- 黑马程序员——基础加强
- 黑马程序员——java基础加强
- 黑马程序员——java基础加强
- spring扫描注解工具类scan
- NSTimer知识点和倒计时的实现
- mac 下对apk进行重新签名
- 欢迎使用CSDN-markdown编辑器
- mysql查看正在执行的sql语句
- 黑马程序员—IOS加强视频—@Class
- PreparedStatement
- 博客第一天。
- exchange2013导入证书后显示无效的问题
- ajax--用户信息的校验
- 以队列的方式实现收容所收养猫和狗
- JAVA项目如何命名包目录
- navigation和tabbar不会挡住view的设置
- 趁着没发霉重写库函数之str_replace