来自Objective-C,我非常喜欢暴露一段代码接口的头文件。 Swift总是困扰我一点,因为即使是最有组织的代码仍然倾向于将公共/私有API隐藏在其余的代码中,让你挖掘细节。
我是否有任何实践或技巧可以定义实现外部的类或模块的公共接口?现在我只是在Swift文件的顶部发表评论,感觉很神秘。
答案 0 :(得分:5)
据我所知,你不能只在类中声明一个方法,并在Swift的其他地方实现它。
我觉得你想要清楚这一点并将你的方法组织成课堂。为了在Swift中实现这一点,我将遵循一些我很乐意与您分享的技巧:
根据访问权限(即公共,私人和内部)组织方法。公共方法位于顶部,因为您希望客户首先查看它们,然后是内部和最后一个私有。
您可以将相关方法组合在一起,以便于理解,维护和导航。
如果相关且依赖性很强,有时候违反上述规则对公共和私人方法进行分组是很好的。
您可以将执行特定任务的相关方法分组到扩展程序中。我通常遵循这种模式在类中实现特定的协议或委托。您也可以在单独的文件中执行此操作。
这不是你问题的直接答案,但我试图通过定位一个类中方法的组织来解决它的核心问题。
答案 1 :(得分:0)
所以我一直在探索这里的选项,看起来你可以使用协议定义一个接口,让你的类符合该协议。有点偏僻,但如果公共接口是目标,那就实现了这一点。
// Foo.swift
protocol PublicFoo {
func publiclyExposedMethod(arg:AnyObject) -> AnyObject
var publiclyExposedVariable:AnyObject
}
class Foo : PublicFoo {
var publiclyExposedVariable:AnyObject = // something
func publiclyExposedMethod(arg:AnyObject) -> AnyObject {
// do stuff...
}
}