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

什么是__NSArrayI和__NSArrayM?

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

如何转换为NSArray?


我做了testing来parsingjson,twitter api。

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

==>正常工作。 parsing对象是NSCFDictionary类。 (这个字典包含__NSArrayM类)

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

==>错误。 parsing对象是__NSArrayM类。

__NSArrayI是一个不可__NSArrayI的代码字 – 也就是说,你不能改变的“常规” NSArray

__NSArrayM是一个可变数组的代码字 – 也就是NSMutableArray 。 在NSMutableArray ,你可以添加和删除项目。

这些是私人API的类。 有一个项目 ,你可以看到所有类的私人API。 您不能在app store的应用程序中使用它们,但有时候也会看到如何访问对象以及它是什么types的对象。 他们不能转换。 我认为,在debugging器中获取这些对象只是内部类的表示,对于您在项目中使用的类。 知道它是什么类,让你也知道在你的代码里面寻找问题的地方。

在这里你可以看到两个简短的查询:

__NSArrayI

在这里输入图像说明

__NSArrayM

在这里输入图像说明

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

如果我没有弄错NSArray_NSArray子类。

如果你正在向数组中添加/删除一些对象,请检查它是否为可变types: NSMutableArray