2010-08-25 2 views
0

Согласно Apple, если вы не создаете объект с помощью alloc или new, тогда его не нужно выпускать.Я только освобождаю объекты, если создаю их с помощью alloc?

Правильно ли я понимаю? Так что-то вроде этого делает не нужно быть высвобождено:

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30]; 

ответ

2

Apple`s Memory Management Rules:

Вы берете право собственности на объект, если вы создаете его, используя метод, имя которого начинается с «Alloc» или «новый» или содержит «копию»

Итак: Вы правы.

1

Если имя метода содержит new, alloc или copy, вы должны освободить его.

Вы не должны выпускать NSURLRequest в вашем примере, это autoreleased.

+0

'init' не относится к набору. Он обычно используется в сочетании с 'alloc'. –

+0

Николай прав. 'Init' does * not * принадлежит к этому набору. –

0

Исправить. Вы не выпустили бы этот объект. Единственный раз, когда вы были бы, если бы вы сначала сохранили его (я взял на себя ответственность).