题
我想与在OBJ-C(选择器)原语一个可变阵列。什么是做到这一点的推荐的方法? NSArray
和那些只能容纳对象。
解决方案
您应该使用NSValue
包选择器,或者需要的任何其他类型的原语。在可可SEL是某种指针的,所以你可以使用[NSValue valueWithPointer:whatever]
来构建它,[value pointerValue]
把它弄出来。或者,一般来说,你可以使用[NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
;这适用于任何类型的
其他提示
如果你想存储SEL
对象的数组,最简单的事情是将SEL
s转换为使用NSString
功能NSStringFromSelector()
s,将它们存储在NSMutableArray
,然后将它们转换回SEL
s当你拉出来使用NSSelectorFromString()
功能
除了管理一个C数组自己(这绝对不是最好的选择,IMO),你唯一的选择就是使用NSArray
/ NSMutableArray
,并使用NSNumber
存储的数字。这是稍微烦人来获取值出比实际数字类型,但它从自己管理阵列的内存确实免费你。
由于原始类型通常只是数字(无论是整数或浮点数)或指针,有什么用用来包装那些为你的目的类的问题? NSMutableArray
的NSNumbers
,例如
不隶属于 StackOverflow