Domanda

Dal momento che non esiste una controparte di NSValue in Core Foundation, come dovremmo archiviare le strutture C in un CFMutableDictionary?

È stato utile?

Soluzione

Innanzitutto, puoi inserire un valore NS in un CFMutableDictionary così com'è, quindi la risposta è "usa NSValue". Ma suppongo che il resto della tua domanda sia "senza usare oggetti di cacao". In tal caso, basta creare un CFMutableDictionary senza ritenzione e puoi inserire qualsiasi puntatore desiderato. Vedi " Definizione di callback di raccolte personalizzate " per alcuni codici di esempio. Li uso molto.

Ricorda che questi devono ancora essere puntatori, quindi dovrai allocare le tue strutture sull'heap, non sullo stack. Ciò significa che la gestione della memoria è ora il tuo problema. Ovviamente potresti creare un set personalizzato di callback che fanno quello che vuoi, quindi se stai usando boost o qualcos'altro con il suo sistema di conteggio dei ref, puoi comunque implementarlo con CFMutableDictionary.

E ovviamente puoi sostituire la struttura con un piccolo oggetto dati. Di solito è molto più semplice. Ma problemi diversi richiedono soluzioni diverse.

Altri suggerimenti

CFMutableDictionary

CFDictionaryAddValue Un oggetto CFType o un valore puntatore da aggiungere al dizionario.

hai appena passato un puntatore alla tua struttura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top