为什么 Swift 3 对于 OSX 和 iOS 构建会区别对待 NSString?
Why does Swift 3 treat NSString differently for OSX vs iOS build?
我有一个 class 由 iOS 和 OSX 共享。升级到Swift3后,如下一行代码:
let textSize = ("999" as NSString).size(withAttributes: [NSFontAttributeName:labelFont!])
...导致 iOS 构建出现以下错误:
调用中的参数标签不正确(有 'withAttributes:',应为 'attributes:')。
固定如下:
let textSize = ("999" as NSString).size(attributes: [NSFontAttributeName:labelFont!])
但是 OSX 构建出现错误:
调用中的参数标签不正确(有 'attributes:',预期 'withAttributes:')
为什么 iOS 和 OSX 版本对 NSString 的处理方式不同?
(我已经使用扩展解决了这个问题。所有其他共享代码已成功转换为 Swift 3。)
NSString
尺码的处理方式不同,主要是由于每次使用的测量方法不同... (NSSize
v CGSize
):
OS X:
extension NSString {
@available(OSX 10.0, *)
open func size(withAttributes attrs: [String : Any]? = nil) -> NSSize
...
}
iOS:
extension NSString {
@available(iOS 7.0, *)
open func size(attributes attrs: [String : Any]? = nil) -> CGSize
...
}
除了 OS X 使用 NSSize
和 iOS 使用 CGSize
除了前者使用 [=17] 之外,它们具有非常相似的 "size" 方法=],后者使用 UIKit
.
我有一个 class 由 iOS 和 OSX 共享。升级到Swift3后,如下一行代码:
let textSize = ("999" as NSString).size(withAttributes: [NSFontAttributeName:labelFont!])
...导致 iOS 构建出现以下错误:
调用中的参数标签不正确(有 'withAttributes:',应为 'attributes:')。
固定如下:
let textSize = ("999" as NSString).size(attributes: [NSFontAttributeName:labelFont!])
但是 OSX 构建出现错误:
调用中的参数标签不正确(有 'attributes:',预期 'withAttributes:')
为什么 iOS 和 OSX 版本对 NSString 的处理方式不同?
(我已经使用扩展解决了这个问题。所有其他共享代码已成功转换为 Swift 3。)
NSString
尺码的处理方式不同,主要是由于每次使用的测量方法不同... (NSSize
v CGSize
):
OS X:
extension NSString {
@available(OSX 10.0, *)
open func size(withAttributes attrs: [String : Any]? = nil) -> NSSize
...
}
iOS:
extension NSString {
@available(iOS 7.0, *)
open func size(attributes attrs: [String : Any]? = nil) -> CGSize
...
}
除了 OS X 使用 NSSize
和 iOS 使用 CGSize
除了前者使用 [=17] 之外,它们具有非常相似的 "size" 方法=],后者使用 UIKit
.