Ich gehe gerade durch den Beispielcode AVFoundation.Framework
->AVSimpleEditoriOS
& Ich fand folgende Zeile, die ich nicht verstehen konnte.statischer Void-Zeiger in AVFoundation.Framework in Beispielcode
static void *AVSEPlayerItemStatusContext = &AVSEPlayerItemStatusContext;
static void *AVSEPlayerLayerReadyForDisplay = &AVSEPlayerLayerReadyForDisplay;
static void *AVSEPlayerItemStatusContext = nil;
static void *AVSEPlayerLayerReadyForDisplay = nil;
Über zwei Leitungen folgende betrachten, kann ich herausfinden, dass das sind 2 static void/generic Zeiger mit einem ausgefallenen Namen.
Nun zurück zu den 2 Zeilen, ich einfügen es hier wieder,
static void *AVSEPlayerItemStatusContext = &AVSEPlayerItemStatusContext;
static void *AVSEPlayerLayerReadyForDisplay = &AVSEPlayerLayerReadyForDisplay;
Heisst oben, 2 static void/generic Zeiger Bezug von seinen eigenen Speichern & warum wäre es, in welchem Sinne gebraucht?
Ich brauche nur kleine Anleitung, um solche Codierungsmuster zu lernen. Warten auf Wissen.
Bedeutet es - wir übergeben es als Kontext (genau wie eine eindeutige ID eines Datensatzes in der Datenbank) & wenn wir eine Antwort vom inneren Rahmen erhalten, können wir die Antwort für den Kontext identifizieren? –
@Spark: Ja, genau. Der Kontextparameter von 'addObserver' benötigt eine Zeigervariable, also ist dies nur eine bequeme Methode zum Erzeugen einer eindeutigen Zeigervariablen. - Ich habe die Antwort ein wenig erweitert, um die Idee klarer zu machen. –
Nur eine Anmerkung: eindeutige Kontextzeiger werden im Allgemeinen gegenüber Schlüsselpfadzeichenfolgen bevorzugt, da es möglich ist, dass eine der Oberklassen auch denselben Schlüsselpfad beobachtet. –