目前在混合的Objective-C / Swift项目中导入的方式

时间:2018-03-13 10:36:25

标签: objective-c swift include

我最近一直在追逐一些循环依赖,我试图弄清楚最新的导入方式是什么。谷歌搜索并没有多大用处,因为在没有明确答案的情况下,这些东西经过几代人的迭代后才会出现。

我现在在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声明了获取句柄所需的文件。

这是最新的做事方式吗?我应该注意这个有限制吗?

1 个答案:

答案 0 :(得分:1)

您的.h是最好和最现代的做法,您应该始终避免#import个文件中的.h

根据我的经验,大多数人仍然倾向于使用#import <Cocoa/Cocoa.h>而不是@import Cocoa;

如果您选择使用模块#import,则会自动执行@import,因此无需使用它。

此类中使用的依赖项更清晰,并且不会导入当前作用域中可能不需要的任何内容。