2010-10-26 2 views
1

Не совсем уверен, как фраза, но я должен освободить переменную в этом situtation:Должен ли я высвобождать указатель, указывающий на элемент в массиве?

NSString *string = @"HELLO WORLD"; 
NSArray *array = [NSArray arrayWithObject:string]; 
NSString *shouldIReleaseThis = [array objectAtIndex:0]; 
NSLog(@"%@", shouldIReleaseThis); 
//???? [shouldIReleaseThis release] ?????? 

//Do stuff with array 

Должен ли я отпустить его? Почему или почему нет?

ответ

4

Вы не являетесь владельцем этой машины (вы не получили эту ссылку от new, alloc, retain или copy), поэтому вы не должны ее отпускать. См. «memory management programming guide» Apple для краткого, но полного обзора правил управления памятью в Cocoa.

+0

Спасибо, это именно то, что я искал. Я читал об управлении памятью, но почему-то концепция «собственности» на самом деле не утонула. – rob

+0

Это действительно хороший ответ, который применим ко всем выпускам переменных в Cocoa. +1! – Chetan

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