干柴

黑马程序员 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;

评论

热度(4)