【发布时间】:2020-09-03 17:33:44
【问题描述】:
我已经在 swift 上编程几年了,但我最近才尝试更好地理解 Objc。 我正在自己做一个小项目,使用 VIPER 架构。我有一个使用 VIPER 的示例 .swift 项目,现在我只想将其“翻译”为 objc 以了解语法。
我对 .h/.m 文件有一些问题: 我不知道我是否应该在 .m 或 .h 文件(分别)或在 .h 或 .m 文件(与它们所属的类)中声明我的协议。 我选择将它们全部放在一个 .h 文件中,并创建了一个 .m 文件来导入它。但这似乎真的很糟糕,因为 .m 是空的。 此外,在这些协议中调用“MyViewController”作为类型时,我会收到诸如“预期类型”之类的错误。
100% 确定问题来自标题。我知道“.h”必须从“.m”文件中导入才能编译,我也知道我们不应该多次调用标题。 但是,当我有 A.h/B.h 文件并且我需要来自 B 的 A 和来自 A 的 B 的东西时,感觉就像我卡住了。在这种情况下,我该如何摆脱困境?
我的 protocol.h 看起来像这样:
@protocol SampleProtocol
+ (MyViewController*) createModule; // Error: Expected a type
- (void) pushToView: (UINavigationController*)navController;
@end
MyViewController.h 看起来像这样:
@interface MyViewController : UIViewController
@property id<PresenterToRouterObjcProtocol> protocol;
@end
感谢您的帮助,希望您能启发我了解我所缺少的作品!
【问题讨论】:
标签: objective-c header protocols