黑马程序员 Object-c相互导入的问题
在编写Object-c语言的时候,可能会出现相互导入的问题,所谓的相互导入就是两个彼此都#import了对方,例如下面的两个类
在Classes类中#import了Student
#import <Foundation/Foundation.h>
#import "Student.h"
@interface Classes : NSObject{
Student * str;
}
@end
而在Student类中也#import了Classes类
#import <Foundation/Foundation.h>
#import "Classes.h"
@interface Student : NSObject{
Classes *cla;
}
@end
这时再编译的时候就会报错,xcode5报出的错是Unkown type name "Student/Classes"
解决的方法是
其中一个类使用@class关键字来代替#import,在这里解释一下两个关键字的区别
#import 导入一个头文件,获取该头文件中类的定义——方法和属性
@class 告述编译器有这么一个类,但是具体是怎么定义的则不知道
这样又会造成一个问题,因为@class只是告述编译器有这么一个类,解决.h文件的相互导入的问题,但是在.m文件中如果想使用该类的定义的方法或属性,却用不了,没有提示
解决的方法是在.m再使用#import导入需要使用类,这样就不会有问题了。
需要注意的是@class 的后面需要加 ;号,例如 @class Student;
评论