gpt4 book ai didi

ios - 有没有办法将 CGPoint 的 NSArray 作为 [CGPoint] 公开给 Swift?

转载 作者:行者123 更新时间:2023-11-30 12:19:05 28 4
gpt4 key购买 nike

我有这个属性:

@property (nonatomic) NSArray<NSValue *> *vertices;

其中顶点的类型为CGPoint

我知道 swift 有一些方便的语言功能,例如 NS_SWIFT_NAME 来更改函数名称,但我想知道是否有办法在 Swift 中将该属性公开为 [CGPoint] 类型。

我问的是如何在 Objective-C 语法中执行此操作,如何创建一个 Objective-C API,在 Swift 中使用时将“顶点”公开为 [CGPoint]。

谢谢。

最佳答案

您不能在 Obj-C 中编写 [CGPoint] 类型的属性在 swift 。

您可以做的就是注释您的 vertices属性 NS_REFINED_FOR_SWIFT 。这会将其作为名为 __vertices 的属性公开给 Swift。反而。现在您可以在 Swift 中为您的类编写一个扩展,提供自己的 var vertices: [CGPoint]计算属性。它可能看起来像

var vertices: [CGPoint] {
return __vertices.map({ $0.cgPointValue })
}

这种方法的缺点是每次访问vertices时Swift 的属性必须分配一个全新的数组。但如果你想公开[CGPoint],实际上没有任何办法可以解决这个问题。 (除了尝试看看是否可以实现任何类型的缓存行为,只有在原始 [CGPoint] 更改时才创建新的 NSArray<NSValue *> )。

关于ios - 有没有办法将 CGPoint 的 NSArray<NSValue> 作为 [CGPoint] 公开给 Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45026762/

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