Relaese, Alloc и Nil объекты? - PullRequest
1 голос
/ 30 мая 2011

Это правильный способ обработки памяти?

Метод 1: без сбоев

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(220.0f, 7.0f, 57.0f, 35.0f)] ;

    button = nil;

    [button release];

Метод 2: с сбоем

 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(220.0f, 7.0f, 57.0f, 35.0f)] ;

   [button release];

   button = nil;

Ответы [ 4 ]

1 голос
/ 30 мая 2011

Первый неверный, и случай утечки памяти.

Второй метод используется большинством из нас, и он не должен падать,

Постсвязанный код с методом # 2.

1 голос
/ 30 мая 2011

Нет необходимости устанавливать переменную, содержащую выделенный объект, в ноль. Просто отпустите его, если он вам больше не нужен. Вот и все.

0 голосов
/ 30 мая 2011

Оба неверны.Вы должны использовать метод класса buttonWithType: для создания кнопок.Он будет устанавливать тип, как вы указываете.Кнопки не должны быть выделены / выделены напрямую.(Может быть, именно отсюда происходит сбой, хотя и не должен)с другими объектами и обычным alloc / init) второй путь верен;первые утечки.

0 голосов
/ 30 мая 2011

Почему вы устанавливаете button = nil; значение кнопки на ноль, после [button release]; вам не нужно это делать просто сделайте [button release]; и ваша кнопка будет отпущена без утечек.

...