您的位置:首页 > 其它

oc 关于头文件声明 与前向声明

2015-08-13 20:02 204 查看
参照
http://blog.csdn.net/jiangwei0910410003/article/details/41774747
1.#import和#include的区别

(当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误

但是使用两次#import的话,不会报错,他会做一次判断,如果已经导入一次就不导入了)

#import本身有防止头文件被重复包含的功能,而#include需要借助于头文件预处理来防止被重复包含

两种都是把头文件中的声明内容拷贝进当前文件中

2.关于前向声明问题
有一个课程类Classes和学生类Student,他们两之间需要相互引用(导入)

(student.h中导入class。h,class。h中导入student。h)

问题是
OC中类的相互引用的问题,我们在Student.h文件中导入了Classes.h,又在Classes.h文件中导入了Student.h,OC中在相互导入的时候编译是不通过的
会提示找不到指定类型
解决方法
将#import "Student.h"代码注释了,使用

@class Student

这段代码的作用就是不会将Student.h文件拷贝过来,只是告诉编译器Student这个类在别的地方中有定义,这样就不知道这个类中的任何信息了(哪些属性和方法)

总结:

这一篇文章就介绍了#import关键字和@class的作用,特别是@class关键字的使用,为了解决相互导入的问题,在此回顾一下我们是怎么操作的:

Student类中的导入Classes.h方式不变,在Classes.h头文件中使用@class关键字引入Student类型,使其编译通过,然后在Classes.m文件中导入Student.h文件,使其运行通过
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: