我最近一直在追逐一些循环依赖,我试图弄清楚最新的导入方式是什么。谷歌搜索并没有多大用处,因为在没有明确答案的情况下,这些东西经过几代人的迭代后才会出现。
我现在在MyViewController.h
文件中的内容:
@class ForwardClass;
@protocol ForwardProtocol;
typedef NS_ENUM(NSUInteger, XYZCharacterType);
@interface MyViewController: UIViewController
@property (strong, nonatomic) ForwardClass *fw;
@property (nonatomic, strong) id<ForwardProtocol> fwProtocol;
@property XYZCharacterType charType;
@end
并在MyViewController.m
文件中:
@import MBProgressHUD;
#import "SomeManager.h"
#import "SomeOtherViewController.h"
#import "Model.h"
#import "MyViewController.h"
#import "MyProject-Swift.h"
@implementation MyViewController
@end
因此.h
文件不再导入任何内容,只有forward声明了获取句柄所需的文件。
这是最新的做事方式吗?我应该注意这个有限制吗?
答案 0 :(得分:1)
您的.h
是最好和最现代的做法,您应该始终避免#import
个文件中的.h
。
根据我的经验,大多数人仍然倾向于使用#import <Cocoa/Cocoa.h>
而不是@import Cocoa;
。
如果您选择使用模块#import
,则会自动执行@import
,因此无需使用它。
此类中使用的依赖项更清晰,并且不会导入当前作用域中可能不需要的任何内容。