如何在cocoa中为集合添加opaque类型?
我收到了编译器警告(显然,因为opaque类型不是对象):
CGColorSpaceRef colorSpace;
NSArray *myArray = [NSArray arrayWithObject:colorSpace];
答案 0 :(得分:3)
您可以使用NSValue类将不透明类型包装在对象中。来自here:
NSValue对象很简单 单个C或容器 Objective-C数据项。它可以容纳任何 标量类型,如int, float,char,以及指针, 结构和对象id。该 这个课程的目的是允许 要添加的此类数据类型的项目 到诸如实例之类的集合 NSArray和NSSet,需要他们的 元素是对象。 NSValue 对象总是不可变的。
答案 1 :(得分:0)
CoreFoundation数据类型(CFTypes)可以直接添加到集合中。 (他们需要被强制转换为(id)来抑制警告。)这被称为“免费桥接”。
CGColorSpaceRef colorSpace;
NSArray *myArray = [NSArray arrayWithObject:(id)colorSpace];