In Objective-C, io normalmente usare qualcosa di simile a questo:L'aggiunta di osservatore per KVO senza puntatori utilizzando Swift
static NSString *kViewTransformChanged = @"view transform changed";
// or
static const void *kViewTransformChanged = &kViewTransformChanged;
[clearContentView addObserver:self
forKeyPath:@"transform"
options:NSKeyValueObservingOptionNew
context:&kViewTransformChanged];
Ho due metodi di overload da scegliere per aggiungere un osservatore per KVO con l'unica differenza l'argomento contesto:
clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, context: CMutableVoidPointer)
clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, kvoContext: KVOContext)
Con Swift non usare puntatori, io non sono sicuro di come dereference un puntatore da utilizzare per il primo metodo.
Se creo la mia costante KVOContext per l'uso con il secondo metodo, finisco con esso chiedere questo:
let test:KVOContext = KVOContext.fromVoidContext(context: CMutableVoidPointer)
EDIT: Qual è la differenza tra CMutableVoidPointer e KVOContext? Qualcuno può darmi un esempio di come usarli entrambi e quando userei uno rispetto all'altro?
EDIT # 2: Un dev su Apple ha appena postato questo nei forum: KVOContext sta andando via; usando un riferimento globale come il tuo contesto è la strada da percorrere adesso.
stai chiedendo come creare un CMutableVoidPointer? –
Ho modificato il mio post per essere più preciso. –