Различия между NSArray и CCArray

Каковы различия между NSArray и CCArray? Кроме того, в каких случаях будет предпочтительнее другого в отношении игрового программирования?

Ответ 1

CCArray эмулирует NSMutableArray. Это оболочка вокруг массива C (буфер памяти). Он был разработан и используется внутри cocos2d, потому что NSMutableArray считался слишком медленным. Однако улучшение производительности минимально. Любые варианты использования (особенности) CCArray, которые не использует cocos2d, остаются потенциальным источником проблем, в том числе странными и трудными для отладки проблем или ужасных характеристик производительности.

Наиболее важным критически важным аспектом является чтение последовательного массива. В моих последних тестах область, в которой CCArray (больше?) Превосходит. В частности, быстрое перечисление: NSMutableArray примерно в 33 раза быстрее!

CCArray - прекрасный пример, почему нельзя изобретать колесо, особенно когда речь идет о классах хранения, когда есть уже стабильное, проверенное и быстрое решение (NSMutableArray). Любое преимущество в скорости, которое, возможно, когда-то было, давно прошло. Остается поведение, с которым вы не захотите работать, включая некоторые крайне плохие характеристики производительности (вставка, быстрое перечисление).

Короче говоря: не использовать CCArray в вашем собственном коде! Относитесь к CCArray как к внутреннему, закрытому классу, который не должен использоваться в коде пользователя (кроме случаев, когда это неизбежно, т.е. дочерний массив).

NSMutableArray - это эталонная реализация массива, которую все должны использовать, потому что она очень хорошо протестирована, документирована и стабильна (как с точки зрения поведения и скорости выполнения).

Ответ 3

CCArray http://www.cocos2d-x.org/embedded/cocos2d-x/d9/d2e/classcocos2d_1_1_c_c_array.html

В cocos2d-x CCArray изменен, т.е. вы можете добавить к нему элементы. Чтобы создать экземпляр CCArray без емкости, вы можете использовать конструктор CCArray:: array(). CCMutableArray - это контейнер на основе шаблонов, который может хранить объекты того же типа. CCArray хранит объекты как экземпляры CCObject, поэтому вам нужно отбросить их после получения из экземпляра CCArray

Класс NSArray содержит ряд методов, специально предназначенных для облегчения создания и обработки массивов в программах Objective-C.