У меня вопрос о распределении памяти для объектов в массиве. Я ищу создать массив объектов, но во время компиляции я не знаю, сколько объектов мне нужно, и, следовательно, не хочу резервировать больше памяти, чем нужно.Распределение памяти для массива объектов. Является ли мое понимание действительным?
Что я хотел бы сделать, это выделить память по мере необходимости. Способ, которым я хотел бы сделать это, - это когда пользователь нажимает кнопку «Добавить», массив увеличивается на один дополнительный объект и выделяется необходимая память для нового объекта.
В моем начинающему понимании Objective C (я был профессиональным программистом около 20 лет назад, и только недавно начали писать код еще раз) я пришел со следующими сегментами кода:
первых, я заявил, мой объект:
NSObject *myObject[1000]; // a maximum number of objects.
Затем, когда пользователь нажимает на кнопку Добавить это работает метод с кодом распределения: (примечание: переменная я начинается при значении 1 и увеличивается каждый раз, когда кнопка Добавить)
++i
myObject[i] = [[NSObject alloc] init];
Таким образом, я надеюсь только выделить память для необходимых объектов, а не всех 1000 объектов массива немедленно.
Я правильно интерпретирую это? Другими словами, могу ли я исправить в своей интерпретации, что количество элементов массива, указанных в объявлении, является MAXIMUM возможным количеством элементов массива, а не тем, сколько памяти выделено в этот момент? Он это правильно, то теоретически, декларация:
NSObject *myObject[10000];
не будет тянуть больше памяти, чем декларация:
NSObject *myObject[5];
Может кто-то подтвердить, что я правильно понять этот процесс, просветить меня если у меня это перепуталось в моем сознании. :)
Спасибо!
Почему вы не используете NSMutableArray или CFMutableArray? Он эффективно добавляет объекты. Вот источник для CFArray, если вы хотите взглянуть: http://www.opensource.apple.com/source/CF/CF-635/CFArray.c –
Спасибо за этот отзыв. Я уверен, что это, вероятно, так, как я должен это делать. Я до сих пор не слышал об этом. Любопытно, хотя я знаю, что я, вероятно, повторно изобретаю колесо, теоретически, насколько я понимаю точное распределение памяти? –
Никогда не используйте C-массивы объектов Objective-C, это плохая идея. Используйте объекты массива, предоставленные языком. Я * настоятельно рекомендую вам прочитать книгу Objective-C. Лучший (IMHO) - [Программирование в Objective-C] (http://www.amazon.com/dp/0321811909/) Стивена Кочана. –