我一直遵循以下规则:
在类的头文件中使用 @MyClassName 和
在实现文件中使用 #import "MyClassName" 现在我决定对一个视图控制器进行子类化。如果我重写一个方法,那么我会得到以下消息:
接收器“ MyClassName”用于类消息是一个前向声明。
为了克服这个问题,我需要将 #import 放入头文件中,这似乎违背了我认为最佳实践的做法。
有人能解释一下我是否误解了 @class 的用途吗?
或者如果我做的是正确的,有人能请解释一下为什么需要打破最佳实践并在头文件中使用 #import 进行子类化吗?
谢谢。
在我的实现中,我有:
如果我在子类中覆盖一个方法并尝试使用一个Organisation对象,它会给我报错,就像我上面所说的那样。因此,我需要将#import "Organisation.h"添加到基类头文件中,或者将#import "Organisation.h"复制到子类的实现文件中。这两种方法都似乎不正确。
非常感谢。
在类的头文件中使用 @MyClassName 和
在实现文件中使用 #import "MyClassName" 现在我决定对一个视图控制器进行子类化。如果我重写一个方法,那么我会得到以下消息:
接收器“ MyClassName”用于类消息是一个前向声明。
为了克服这个问题,我需要将 #import 放入头文件中,这似乎违背了我认为最佳实践的做法。
有人能解释一下我是否误解了 @class 的用途吗?
或者如果我做的是正确的,有人能请解释一下为什么需要打破最佳实践并在头文件中使用 #import 进行子类化吗?
谢谢。
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"
@class Organisation;
@interface LongCallDetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
在我的实现中,我有:
#import "Organisation.h"
我的子类头文件包含以下内容:
#import "LongCallDetailViewController.h"
@interface LongCallSubclassViewController : LongCallDetailViewController
@end
如果我在子类中覆盖一个方法并尝试使用一个Organisation对象,它会给我报错,就像我上面所说的那样。因此,我需要将#import "Organisation.h"添加到基类头文件中,或者将#import "Organisation.h"复制到子类的实现文件中。这两种方法都似乎不正确。
非常感谢。
LongCallDetailViewController
的头文件中放置了#import "Organisation.h"
,你就不必再输入一遍了。我不确定在这种情况下我对“最佳实践”的立场是什么;它为潜在的子类提供了帮助,但也可能导致导入循环(如果你对导入非常粗心)。 - Ian MacDonald