如何將不透明類型添加到可可集合中?如何將不透明類型添加到集合
我得到這個編譯器警告(顯然,因爲不透明的類型不是對象):
CGColorSpaceRef colorSpace;
NSArray *myArray = [NSArray arrayWithObject:colorSpace];
如何將不透明類型添加到可可集合中?如何將不透明類型添加到集合
我得到這個編譯器警告(顯然,因爲不透明的類型不是對象):
CGColorSpaceRef colorSpace;
NSArray *myArray = [NSArray arrayWithObject:colorSpace];
CoreFoundation數據類型(CFTypes)可以直接添加到集合中。 (他們需要投到(id)來壓制警告。)這被稱爲「免費橋接」。
CGColorSpaceRef colorSpace;
NSArray *myArray = [NSArray arrayWithObject:(id)colorSpace];
可以使用NSValue類來包裝你的不透明類型的對象。從here:
一個NSValue對象爲單C或 Objective-C的數據項的簡單 容器。它可以容納標量類型的任何 ,如int, float和char,以及指針, 結構和對象標識符。該類的 的目的是允許 這樣的數據類型的項目被添加 到例如 NSArray和NSSet的實例的集合,其需要它們的 元素作爲對象。 NSValue 對象始終是不可變的。
這不是正確的答案。 CFType可以通過免費橋接直接添加到收藏。看到接受的答案。 – lajos 2009-02-06 06:33:04