在我的控制器的头文件中,我需要声明另一个控制器的实例。我是这样做的:#import和@class在我的简单情况下的区别
#import "BIDMyRootController.h"
#import "BIDAnotherController.h" //I import another controller's header
@interface BIDCurrentController : BIDMyRootController
//I declare an instance of another controller
@property (strong, nonatomic) BIDAnotherController *anotherController;
@end
上面的代码非常简单。没问题!
但是,我也注意到了,或者,我可以通过以下方式使用@class
来代替我的#import
语句BIDAnotherController
:
#import "BIDMyRootController.h"
@class BIDAnotherController //I declare another controller with @class tag
@interface BIDCurrentController : BIDMyRootController
//I declare an instance of another controller
@property (strong, nonatomic) BIDAnotherController *anotherController;
@end
没问题呢!
但我现在很困惑,#import "BIDAnotherController.h"
和@class BIDAnotherController
之间的区别是什么,那么如果他们都ok了???
更新:
顺便说一句,在BIDCurrentController
实现文件,我已经再次导入BIDAnotherController
:
#import "BIDCurrentController.h"
#import "BIDAnotherController.h" //import another controller again
@implementation BIDCurrentController
...
@end
[@class vs. #import]可能的重复(http://stackoverflow.com/questions/322597/class-vs-import)我添加了我的答案,但回想起这个问题.. – 2013-05-01 14:53:38
@class声明类名称作为编译器的类型,因此您可以定义指向该类实例的指针。没有声明该类的方法,属性或实例变量,因此不能在任何地方“使用”该类型的对象,只传递其指针。 – 2013-05-01 15:55:44