Pergunta

Uma vez que não há nenhuma contrapartida para NSValue no Núcleo Foundation, como é que vamos estruturas loja C em um CFMutableDictionary?

Foi útil?

Solução

Em primeiro lugar, você pode colocar um NSValue em um CFMutableDictionary como está, então a resposta é "usar NSValue." Mas eu assumo o resto da sua pergunta é "sem o uso de quaisquer objetos de cacau." Nesse caso, basta criar uma CFMutableDictionary não-retenção, e você pode colocar qualquer ponteiro que você quer para ele. Veja "Definir Coleção do costume de Callbacks" para alguns códigos de exemplo. Eu usá-los muito.

Lembre-se que estes ainda têm que ser ponteiros, então você vai ter que alocar seus estruturas na pilha, não a pilha. E isso significa que o gerenciamento de memória é agora o seu problema. Claro que você pode criar um conjunto personalizado de retornos de chamada que fazer o que quiser, por isso, se você estiver usando o impulso ou qualquer outra coisa com seu próprio sistema ref contagem, você ainda pode implementar isso com CFMutableDictionary.

E, claro, você pode substituir a estrutura com um objeto de dados de pequeno porte. Isso é geralmente muito mais fácil. Mas diferentes problemas necessitam de soluções diferentes.

Outras dicas

CFMutableDictionary

CFDictionaryAddValue Um objeto CFType ou um valor de ponteiro para adicionar ao dicionário.

você apenas passar um ponteiro para a sua estrutura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top