objC - 空数组类型

时间:2011-02-16 14:37:36

标签: objective-c cocoa

在C,C ++,C#中,您可以拥有某种类型的数组,如int []。 在objC中,NSArray可以为每个元素使用不同的类型。 如果你想拥有一个x类型的NSArray,你现在可以将索引0处元素的类型视为数组的类型,这意味着如果[anArray objectAtIndex:0]是NSString,则将所有对象视为NSString并且如果任何元素的类型与索引0处的元素的类型不同,则抛出错误。这很难看,但您可以通过这种方式模拟类型化数组。 现在,在C#中,甚至可以有一个x类型为0的空数组。 然而,一个空的NSArray当然没有元素,甚至没有索引0,所以那里没有typeinfo。

现在,如果objC应用程序从C#应用程序获取数组,反之亦然,并且在某些情况下C#应用程序发送或期望空数组,则接收方必须知道如何获取/设置此类型信息的类型objC?

当然我可以使用C数组而不是NSArrays,但是如果你想在NSDictionary中存储一个c数组,你必须首先将它放入NSValue中,并且NSValue不提供存储大小的可能性动态分配的c-array。

有没有更好的选择,而不是实现一个新的类“CArrayValue”来存储NSDictionary中带有typeinfo和size的C_Arrays?

1 个答案:

答案 0 :(得分:3)

为NSArray创建一个包装器,它包含一个类型键作为实例变量和一个NSArray。通过这种方式,您应该能够轻松控制阵列的类型。另外,你可以做些什么来防止添加不允许的类型,写一些方法可以删除/添加数组/初始化它。