2009-02-02 11 views
0

Comment puis-je ajouter un type opaque à une collection dans le cacao?comment ajouter des types opaques aux collections

je reçois un avertissement du compilateur pour cela (évidemment, car les types opaques ne sont pas des objets):

CGColorSpaceRef colorSpace; 
NSArray *myArray = [NSArray arrayWithObject:colorSpace]; 

Répondre

0

Les types de données CoreFoundation (CFTypes) peuvent être directement ajoutés aux collections. (Ils doivent être castés (id) pour supprimer les avertissements.) Ceci est appelé "pont gratuit".

CGColorSpaceRef colorSpace; 
NSArray *myArray = [NSArray arrayWithObject:(id)colorSpace]; 
3

Vous pouvez utiliser la classe NSValue pour envelopper vos types opaques dans un objet. De here:

Un objet NSValue est un simple récipient pour un seul ou C Objective-C donnée. Il peut contenir n'importe quel des types scalaires tels que int, float et char, ainsi que des pointeurs, des structures et des identifiants d'objets. Le but de cette classe est de permettre éléments de ces types de données à ajouter à des collections telles que les instances de NSArray et NSSet, qui nécessitent leurs éléments être des objets. NSValue les objets sont toujours immuables.

+0

Ce n'est pas la bonne réponse. Les types CF peuvent être directement ajoutés aux collections via le pontage gratuit. Voir la réponse acceptée. – lajos

Questions connexes