什么是__NSArrayI和__NSArrayM?如何转换为NSArray?

时间:2011-10-07 08:12:04

标签: iphone objective-c ios nsarray nsobject

__NSArrayI和__NSArrayM是什么?

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

如何转换为NSArray?


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

http://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=twitterapi

==>工作良好。解析对象是NSCFDictionary类。 (这个字典包含__NSArrayM类)

http://api.twitter.com/1/statuses/user_timeline.json?&screen_name=twitterapi

==>错误。解析对象是__NSArrayM类。

3 个答案:

答案 0 :(得分:73)

__NSArrayI是不可变数组的代码字 - 也就是说,您无法更改的“常规”NSArray

__NSArrayM是可变数组的代码字 - 即NSMutableArray。在NSMutableArray中,您可以添加和删除项目。

答案 1 :(得分:5)

这些是私人api的类。有is a project,您可以在其中查看私有API的所有类。您不能在app store的应用程序中使用它们,但有时也可以看到如何访问对象以及它是什么类型的对象。他们无法转换。我认为,在调试器中获取这些类型的对象只是内部类的表示,对于您在项目中使用的类。知道它是什么类,让您也了解在代码中查找问题的位置。

在这里您可以看到两者的简短查找:

<强> __ NSArrayI

enter image description here

<强> __ NSArrayM

enter image description here

答案 2 :(得分:2)

这是私人课程。你不应该想要访问它们或者转换它们。

如果我没有弄错,NSArray_NSArray的子类。

如果要在数组中添加/删除某些对象,请检查它是否为可变类型:NSMutableArray