2009-02-02 32 views
0

如何將不透明類型添加到可可集合中?如何將不透明類型添加到集合

我得到這個編譯器警告(顯然,因爲不透明的類型不是對象):

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

回答

0

CoreFoundation數據類型(CFTypes)可以直接添加到集合中。 (他們需要投到(id)來壓制警告。)這被稱爲「免費橋接」。

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

可以使用NSValue類來包裝你的不透明類型的對象。從here

一個NSValue對象爲單C或 Objective-C的數據項的簡單 容器。它可以容納標量類型的任何 ,如int, float和char,以及指針, 結構和對象標識符。該類的 的目的是允許 這樣的數據類型的項目被添加 到例如 NSArray和NSSet的實例的集合,其需要它們的 元素作爲對象。 NSValue 對象始終是不可變的。

+0

這不是正確的答案。 CFType可以通過免費橋接直接添加到收藏。看到接受的答案。 – lajos 2009-02-06 06:33:04