What is __NSArrayI and __NSArrayM? How to convert to NSArray?

£可爱£侵袭症+ 提交于 2019-11-27 12:03:50

__NSArrayI is a code-word for an immutable array - that is, a "regular" NSArray which you cannot change.

__NSArrayM is a code-word for a mutable array - that is, NSMutableArray. In NSMutableArray, you can add and remove items.

These are classes of the private api. There is a project where you can see all classes of the private api. You are not allowed to use them inside an app for the app store but sometimes it is useful too see how to access the objects and also what kind of object it is. They cannot be converted. I think, getting these kind of objects inside the debugger is just the representation of internal classes, for the classes you are using inside your project. Knowing what kind of class it is, lets you also understand where to look for the problem inside your code.

Here you can see a short lookup of both:

__NSArrayI

__NSArrayM

It is private classes. You shouldn't want to access them or moreover convert them.

If I'm not mistaken NSArray is subclass of _NSArray.

If you are adding/removing some objects to/from your array check that it is of mutable type : NSMutableArray

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!