NSURLRequest авто-релиз? - PullRequest
       11

NSURLRequest авто-релиз?

1 голос
/ 11 июня 2011

Когда я использую autorelease с NSURLRequest, приложение вылетает.

 NSURLRequest *getRequest = [[NSURLRequest requestWithURL:[NSURL URLWithString:query]] autorelease];

Я новичок в obj-c и не уверен, как работает управление памятью. Нужно ли вручную делать [getRequest release]?

И если да, то когда я должен это сделать ... сразу после создания NSURLConnection?

Или NSURLConnection освобождает запрос?

Схожий вопрос у меня с NSMutableArray. Когда я добавляю объект в массив, нужно ли делать выпуск этого объекта после добавления его в массив? Каков жизненный цикл памяти объектов, добавляемых в массив?

Ответы [ 3 ]

2 голосов
/ 11 июня 2011

тщательно изучите это, прежде чем кодировать в ObjC http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html.

Ответы на ваши вопросы:

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

Нет необходимости явно освобождать объекты, добавленные в массив / словарь.Они освобождаются при удалении из массива / списка или удалении коллекции.(по сути, добавление в массив + удаление из массива уравновесит)

1 голос
/ 11 июня 2011

Вы освобождаете объект, как только вы (или текущая процедура) покончили с ним.Вам не нужно выпускать, если вы используете autorelease (как может означать название).

0 голосов
/ 11 июня 2011
 [NSURLRequest requestWithURL:[NSURL URLWithString:query]]

возвращает объект автоматического освобождения, поэтому вам не нужно добавлять сообщение автоматического выпуска

в противном случае вы можете сохранить его в атрибуте класса и освободить его позже

...