Подтвердить что ты не робот

Что такое __NSArrayI и __NSArrayM? Как преобразовать в NSArray?

Что такое __NSArrayI и __NSArrayM?

__ NSArrayI (или M) вызывает ошибку "непризнанного селектора".

Как преобразовать в NSArray?


Я проверил для синтаксического анализа json, twitter api.

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

== > отлично работает. parsed object - класс NSCFDictionary. (Этот словарь содержит класс __NSArrayM)

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

== > ошибка. анализируемый объект является классом __NSArrayM.

4b9b3361

Ответ 1

__NSArrayI - это кодовое слово для неизменяемого массива, то есть "регулярный" NSArray, который вы не можете изменить.

__NSArrayM является кодовым словом для изменяемого массива, то есть NSMutableArray. В NSMutableArray вы можете добавлять и удалять элементы.

Ответ 2

Это классы частного api. Там - это проект, где вы можете увидеть все классы private api. Вы не можете использовать их в приложении для app store, но иногда полезно также посмотреть, как получить доступ к объектам, а также к какому объекту он принадлежит. Они не могут быть преобразованы. Я думаю, что получение таких объектов внутри отладчика - это просто представление внутренних классов для классов, которые вы используете в своем проекте. Зная, что это за класс, вы также можете понять, где искать проблему внутри вашего кода.

Здесь вы можете увидеть короткий просмотр обоих:

__ NSArrayI

enter image description here

__ NSArrayM

enter image description here

Ответ 3

Это частные классы. Вы не должны обращаться к ним или, кроме того, конвертировать их.

Если я не ошибаюсь, NSArray является подклассом _NSArray.

Если вы добавляете/удаляете некоторые объекты в/из вашего массива, проверьте, что он имеет изменяемый тип: NSMutableArray