Как добавить непрозрачный тип в коллекцию какао?
Я получаю предупреждение компилятора за это (очевидно, потому что непрозрачные типы не являются объектами):
CGColorSpaceRef colorSpace; NSArray *myArray = [NSArray arrayWithObject:colorSpace];
Вы можете использовать класс NSValue для переноса ваших непрозрачных типов в объект. С здесь :
NSValue объект является простым контейнер для одного C или Элемент данных Objective-C. Это может держать любой скалярных типов, таких как int, плавать, и символ, а также указатели, структуры и идентификаторы объектов. Цель этого класса состоит в том, чтобы позволить элементы таких типов данных, которые будут добавлены в коллекции, такие как экземпляры NSArray и NSSet, которые требуют их элементы должны быть объектами. NSValue объекты всегда неизменны.
Типы данных CoreFoundation (CFTypes) можно напрямую добавлять в коллекции. (Они должны быть приведены к (id) для подавления предупреждений.) Это называется "бесплатное соединение".
CGColorSpaceRef colorSpace; NSArray *myArray = [NSArray arrayWithObject:(id)colorSpace];