Frage

Da gibt es kein Gegenstück zu NSValue in Core Foundation, wie sollen wir C structs in einem CFMutableDictionary speichern?

War es hilfreich?

Lösung

Sie können zunächst eine NSValue in einem CFMutableDictionary setzen wie sie ist, so ist die Antwort „NSValue verwenden.“ Aber ich nehme an, der Rest Ihrer Frage ist „ohne Cocoa Objekte verwendet wird.“ In diesem Fall erstellen Sie einfach einen Nicht-Halt CFMutableDictionary, und Sie können jeden Zeiger setzen können Sie in sie wollen. Siehe „definieren von benutzerdefinierten Sammlung Rückrufe“ für einige Beispiel-Code. Ich benutze diese viel.

Beachten Sie, dass diese müssen noch Zeiger sein, so dass Sie gehen, um Ihre Strukturen auf dem Heap reservieren, nicht der Stapel. Und das bedeutet, dass die Speicherverwaltung jetzt Ihr Problem. Natürlich können Sie einen benutzerdefinierten Satz von Callbacks erstellen, das zu tun, was Sie wollen, wenn Sie also Schub oder etwas anderes mit seinem eigenen ref-Zählsystem verwenden, können Sie immer noch, dass implementieren mit CFMutableDictionary.

Und natürlich können Sie die Struktur mit einem kleinen Datenobjekt ersetzen. Das ist in der Regel sehr viel einfacher. Aber verschiedene Probleme benötigen unterschiedliche Lösungen.

Andere Tipps

CFMutableDictionary

CFDictionaryAddValue Ein CFType Objekt oder ein Zeigerwert zum Wörterbuch hinzuzufügen.

Sie nur einen Zeiger auf Ihre Struktur übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top