在我的控制器的頭文件中,我需要聲明另一個控制器的實例。我是這樣做的:#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