Как 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' может применяться только к классам и типам протоколов, привязанным к классу, а не '‹‹тип ошибки>>'
- Расширения не могут содержать сохраненные свойства
На самом деле я хотел бы предоставить свойство сущности в версиях OSX до 10.13, поэтому дополнительные предложения по этому поводу также приветствуются.
SCNNode
, вероятно, является расширением Obj-C, и именно так был создан интерфейс Swift. На самом деле это не действительно Swift. - person Sulthan   schedule 21.06.2017