相关疑难解决方法(0)

前缀扩展功能

在Swift中,不再需要为添加前缀,因为它们的模块充当命名空间.

前缀扩展功能怎么样?例如:

extension UIImage {

    public func hnk_hasAlpha() -> Bool { ... }

}
Run Code Online (Sandbox Code Playgroud)

一方面Swift不是动态的,因此冲突会产生编译错误.

但是,如果编译代码在未来的iOS/OS X版本中运行,其中添加了一个扩展方法,会发生什么?即使它们具有相同的签名,不同模块中的方法也会被视为不同的符号吗?

如果扩展类是NSObject子类或纯Swift类,它会有所不同吗?

macos naming-conventions ios swift

22
推荐指数
1
解决办法
2161
查看次数

Swift类应该加上前缀以避免潜在的Objective-C兼容性冲突问题

为了提供交叉兼容性,Swift允许生成桥接头,以便Objective-C可以与Swift类进行通信.

由于Swift的奇妙命名空间,我们不再需要担心我们的Swift文件前缀,因为它们被包含的框架命名.一个UIView例如是隐式名字空间UIKit.UIView.

既然Apple正在推动框架,我想知道当存在两个具有相同符号的快速桥接头时,避免头部冲突的最佳实践是什么.

一个例子:假设我们有两个声明了Swift类的框架Downloader.在Downloader提供了接口:downloadWithURL(url: NSURL)

生成桥接头将为这两个框架生成Downloader-Swift.h文件.从而引起碰撞.避免这种情况的最佳做法是什么?

macos objective-c ios swift

7
推荐指数
1
解决办法
862
查看次数

标签 统计

ios ×2

macos ×2

swift ×2

naming-conventions ×1

objective-c ×1