Что такое __NSArrayI и __NSArrayM? Как конфертировать в NSArray?

Что такое __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 ответа

Решение

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

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

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

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

__NSArrayI

__NSArrayM

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

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

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

Другие вопросы по тегам