2010-11-03 2 views

ответ

22

Просьба пройти this долгий учебник по управлению памятью. Возможно, потребуется некоторое время для чтения целиком, но это объясняет основные вещи.

EDIT: О копировании - Когда вы используете сохранение, вы просто увеличиваете количество удержаний объекта. Но когда вы используете копию, создается отдельная копия (мелкая копия) объекта. Раздельный означает, что другой объект сохранить счетчик 1.

Например,

 
NSObject *obj1 = [[NSObject alloc] init]; // obj1 has retain count 1 

// obj1 and obj2 both refer same object. now retain count = 2 
// any change via obj1 will be seen by obj2 and vice versa, as they point same object 
NSObject *obj2 = [obj1 retain]; 

// obj3 is a separate copy of the object. its retain count is 1 just like newly allocated object 
// change via obj3 will not affect obj1 or obj2 and vice versa as they are separate objects 
NSObject *obj3 = [obj1 copy]; 

+0

Спасибо. В учебном пособии объясняется, что сохраняет средства и довольно много базового управления памятью, но на самом деле это не объясняет, что делает метод копирования. Есть ли еще учебники по управлению памятью или только часть памяти памяти? Спасибо – TheAmateurProgrammer

+1

Проверьте изменения. – taskinoor

+0

А также, когда вы получаете время, проверьте подробное руководство по управлению памятью, предложенное William Remacle. – taskinoor

4

Alloc: когда вам нужно сделать выделение памяти (Вы хотите создать объект, необходимо выделить пространство памяти для него)

Каждый объект имеет сохранить количество, которое указывает число объектов с права собственности на этот объект. Это делается автоматически с alloc и с копия (копия означает, что вы хотите получить копию этого объекта). Но вы также можете сделать это, используя ключевое слово.

При сохранении count == 0 будет вызван метод dealloc и высвободит все распределения, сделанные в этом объекте.

Я надеюсь, что это достаточно ясно. Если вы хотите получить дополнительную информацию: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

+0

+1 за указание лучшего документа. – taskinoor

Смежные вопросы