Iphone 什么是uu NSArrayI和u NSArrayM?如何转换为NSArray?

Iphone 什么是uu NSArrayI和u NSArrayM?如何转换为NSArray?,iphone,objective-c,ios,nsarray,nsobject,Iphone,Objective C,Ios,Nsarray,Nsobject,什么是uu NSArrayI和u NSArrayM __NSArrayI(或M)导致“无法识别的选择器”错误 如何转换为NSArray 我做了测试来解析json,twitter api ==>工作正常。解析的对象是NSCFDictionary类。 (本词典包含uu NSArrayM类) =>错误。解析的对象是u nsarray类。它是私有类。您不应该希望访问它们,甚至不希望转换它们 如果我没弄错的话,NSArray是\u NSArray的子类 如果要在数组中添加/删除某些对象,请检查它是否

什么是uu NSArrayI和u NSArrayM

__NSArrayI(或M)导致“无法识别的选择器”错误

如何转换为NSArray


我做了测试来解析json,twitter api

==>工作正常。解析的对象是NSCFDictionary类。 (本词典包含uu NSArrayM类)


=>错误。解析的对象是u nsarray类。

它是私有类。您不应该希望访问它们,甚至不希望转换它们

如果我没弄错的话,
NSArray
\u NSArray
的子类


如果要在数组中添加/删除某些对象,请检查它是否为可变类型:
NSMutableArray
\uu NSArrayI
是不可变数组的码字,即不能更改的“常规”
NSArray


\uuu NSArrayM
是可变数组的一个码字,也就是说,
NSMutableArray
。在
NSMutableArray
中,您可以添加和删除项。

这些是私有api的类。在这里,您可以看到私有api的所有类。您不允许在
应用商店
的应用程序中使用它们,但有时也可以查看如何访问对象以及对象的类型。它们无法转换。我认为,在调试器中获取此类对象只是内部类的表示,对于您在项目中使用的类而言。知道它是什么类型的类,还可以让您了解在代码中查找问题的位置

在这里,您可以看到以下两个方面的简短查找:

\uu NSArrayI

\uu NSArrayM


发布给您错误的代码。uu NSArrayI=>不可变NSArray uu NSArrayM=>可变nsarrayal所以发布未经认可的选择器消息。很好--您在哪里找到这些知识?直接读取运行时的源代码?这些名字是一个很好的线索(“M”和“I”在数组上下文中的含义不多,但却是可变的和不可变的),但最好的方法是使用object_getClass()检查已知为NSArray的对象。@Catfish_Man six