hpi*_*que 22 macos naming-conventions ios swift
在Swift中,不再需要为类添加前缀,因为它们的模块充当命名空间.
前缀扩展功能怎么样?例如:
extension UIImage {
public func hnk_hasAlpha() -> Bool { ... }
}
Run Code Online (Sandbox Code Playgroud)
一方面Swift不是动态的,因此冲突会产生编译错误.
但是,如果编译代码在未来的iOS/OS X版本中运行,其中添加了一个扩展方法,会发生什么?即使它们具有相同的签名,不同模块中的方法也会被视为不同的符号吗?
如果扩展类是NSObject子类或纯Swift类,它会有所不同吗?
Cat*_*Man 21
这里有一些微妙之处:
Objective-C类型的扩展实现为Objective-C类别,所有这些都暗示着.
但是,Swift类型的扩展仅在由于导入而可见的情况下生效.这意味着您不会意外地踩踏私有系统方法(无论是现在还是将来引入的方法),并且如果系统引入了与您的名称相同的公共方法,则在编译时会出现编译时失败你重建,但你现有的应用程序不会破坏.