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

发布于 2024-12-08 18:28:51 字数 615 浏览 0 评论 0原文

什么是 __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 类。

What is __NSArrayI and __NSArrayM?

__NSArrayI(or M) cause "unrecognized selector" error.

How to convert to NSArray?


I did test to parse json, twitter api.

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

==> works fine. parsed object is NSCFDictionary class.
(This dictionary contains __NSArrayM class)

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

==> error. parsed object is __NSArrayM class.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

素染倾城色 2024-12-15 18:28:52

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

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

__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.

像极了他 2024-12-15 18:28:52

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

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

__NSArrayI

在此处输入图像描述

__NSArrayM

在此处输入图像描述

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

enter image description here

__NSArrayM

enter image description here

护你周全 2024-12-15 18:28:52

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

如果我没记错的话 NSArray_NSArray 的子类。

如果您要向数组添加/删除一些对象,请检查它是否是可变类型:NSMutableArray

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文