【发布时间】:2017-11-24 06:23:28
【问题描述】:
Apple 怎么能做到这一点:
import CoreGraphics
import GameplayKit
import simd
/**
@header
SceneKit framework category additions related to GameplayKit integration.
@copyright 2017 Apple, Inc. All rights reserve.
*/
extension SCNNode {
/**
* The GKEntity associated with the node via a GKSCNNodeComponent.
*
* @see GKEntity
*/
@available(OSX 10.13, *)
weak open var entity: GKEntity?
}
/**
* Adds conformance to GKSceneRootNodeType for usage as rootNode of GKScene
*/
extension SCNScene : GKSceneRootNodeType {
}
...我不能这样做:
extension SCNNode {
weak open var ntity: GKEntity?
}
得到两个错误:
- 'weak' 只能应用于类和类绑定协议类型,而不是 '>'
- 扩展可能不包含存储的属性
我真正想做的是在 10.13 之前的 OSX 版本上提供实体属性,因此也欢迎对此提出其他建议。
【问题讨论】:
-
他们真的做不到。
SCNNode可能是一个 Obj-C 扩展,这就是 Swift 接口的生成方式。这真的不是有效的 Swift。 -
它可以是计算属性,它们看起来与生成界面中存储的属性相同。