oc 中 ID 数据类型 以及 #import 和@class区别 摘要
来源:互联网 发布:oracle数据库建表语句 编辑:程序博客网 时间:2024/06/08 07:06
- ID数据类型
- 通用的指针类型
- 没有*号
- 可以指向任何类的对象(设置是nil),而不关心其具体类型
- 在运行时检查其具体类型
- 可以对其发送任何(存在的)消息
id是泛类型,可以用来存放各种类型的对象,使用id也就是使用“动态类型”。id
在执行时Objetive-C的执行环境会找出该id所代表原来类型。
id gr;
gr=[[Elli1 alloc]init];
[gr release];
gr=[[Elli2 alloc]init];
[gr release];
#import和@class在oc中的区别。
1.#import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,在编译的时候,告诉编译器,这是一个类名,无需报错。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,产生死循环的问题。如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
综上所述.@class一般出现在头文件中.#import一般出现在实现,也就是.m中.
其解决两个类循环依赖调用的问题(在 .h 文件里)。
ex:两个类 Teacher 、Student。
在Teacher . h 里 定义方法:-(void)teach : ( Student *) stu ; 因为这里用到了Student 的对象,所以在这里需要导入 #import “ Student .h ”。
在Student . h 里定义方法:-(void )listen :(Teacher *)tea;因为这里用到了Teacher 的对象,按理要导入 #import “ Teacher .h”,但导入后会报错。
所以这时候就要在 Student.h 里(注意是.h 文件里)导入@class Teacher ,这时候就可以使用对象 tea。
但若在两个类的 .m 文件里要使用彼此的方法,那就必须相互导入 #import Teacher 和 #import Student。这时不会报错。
0 0
- oc 中 ID 数据类型 以及 #import 和@class区别 摘要
- OC中 #include、#import、@class 区别
- OC中@class与#import区别
- OC 导入类 #import和@class 区别
- OC 导入类 #import和@class 区别 .
- #import和@class在oc中的区别。
- #import和@class在oc中的区别。
- OC学习篇之---@class关键字的作用以及#include和#import的区别
- OC学习篇之---@class关键字的作用以及#include和#import的区别
- OC学习篇之---@class关键字的作用以及#include和#import的区别
- #include和#import区别以及@class作用
- oc中import和include的区别
- OC学习之路:@class和#import的区别
- iOS笔记--oc语法3 (#include和#import的区别、#import和@class的区别)
- ios中@class和 #import区别
- iOS中#import和@class的区别
- iOS中#import和@class的区别
- iOS中#import和@class的区别
- iOS 如何获取系统的个人热点,进行配置UI
- IOS8 指纹解锁 Touch ID
- 匈牙利算法的C++实现
- spring 国际化
- MapReduce
- oc 中 ID 数据类型 以及 #import 和@class区别 摘要
- Linux进程间通信——使用消息队列
- C#,Dictionary,asp.net 字典 用法及简单操作
- oc 中NSString 、NSMuablestring 方法
- xmlpullparser用法体会
- iOS 上传云端代码
- 汇编语言入门笔记
- [urls.py设置技巧]URLconf处理其三:URL匹配返回结果
- Hadoop Hive sql语法详解