gpt4 book ai didi

ios - 为什么Swift 3对OSX和iOS版本的NSString会有不同的对待?

转载 作者:行者123 更新时间:2023-12-01 20:02:03 25 4
gpt4 key购买 nike

我有一个由iOS和OSX共享的类。升级到Swift 3之后,下面的代码行:

let textSize = ("999" as NSString).size(withAttributes: [NSFontAttributeName:labelFont!])

...导致iOS版本出现以下错误:

调用中的参数标签不正确(具有“withAttributes:”,预期为“属性:”)。

固定如下:
let textSize = ("999" as NSString).size(attributes: [NSFontAttributeName:labelFont!])

但是,然后OSX构建有错误:

调用中的参数标签不正确(具有“属性:”,预期为“withAttributes:”)

为什么在iOS和OSX构建中对NSString进行不同的处理?

(我已经使用扩展程序解决了这个问题。所有其他共享代码已成功转换为Swift3。)

最佳答案

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
...
}

除了使用 NSSize的OS X和使用 CGSize的iOS外,它们具有非常相似的“大小”方法,除了前者使用 AppKit和后者使用 UIKit之外。

关于ios - 为什么Swift 3对OSX和iOS版本的NSString会有不同的对待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com