前缀扩展功能

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类型的扩展仅在由于导入而可见的情况下生效.这意味着您不会意外地踩踏私有系统方法(无论是现在还是将来引入的方法),并且如果系统引入了与您的名称相同的公共方法,则在编译时会出现编译时失败你重建,但你现有的应用程序不会破坏.

  • 不记得了,tbh.开发论坛的一些组合和与快速工作的人交谈. (2认同)