Почему UIButton не требует выделять и инициализировать? - PullRequest
4 голосов
/ 09 августа 2011

Почему UIButton не требует выделять и инициализировать вызов, вместо этого мы используем только UIButton *myBtn = [UIButton buttonWithType:UIButtonTypeCustom];.

  1. Вышеуказанная строка автоматически выделяет s и инициализирует uibutton ??
  2. Isнеобходимо освободить myBtn ?, так как я не использую alloc и init явно.

Это может быть простой вопрос, но я не знаю правильный ответ для этого, кто-нибудь может помочь?Любая помощь приветствуется, спасибо заранее.

Ответы [ 4 ]

4 голосов
/ 09 августа 2011

Хорошо, buttonWithType вернет тип UIButton, который для вас равен alloc и init. Это также автоматически выпущено.

Вы можете также alloc и init нажать кнопку UIB для себя, это даст вам кнопку UIB типа UIButtonTypeCustom.

2 голосов
/ 09 августа 2011

Существует ряд правил, которым следуют имена методов - читать эту ссылку ;)

В основном имена начинаются с alloc, new, copy или mutableCopy требует, чтобы вы вызывали release (или autorelease).

Любые другие методы, которые возвращают объект, будут возвращать автоматически освобожденные объекты.

Например:

// You need to release these
NSString *myString = [[NSString alloc] init];
NSString *nextString = [myString copy];
UIbutton *button = [[UIButton alloc] initWithType:UIButtonTypeCustom];

// You don't need to release these
NSString *thirdString = [NSString stringWithString:@"Hello"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

Надеюсь, это поможет!

2 голосов
/ 09 августа 2011

buttonWithType возвращает автоматически выпущенный объект, который вам не нужно освобождать.Поскольку вы не alloc, нет необходимости release.

1 голос
/ 23 ноября 2012

Реализация скрыта для всех объектов UIClass, метод выделения уровня класса происходит из NSObject в случае UIButton, также мы получаем метод alloc, если мы пишем это

(id)buttonWithType:(UIButtonType)buttonType
{

UIButton=[NSObject alloc];

 code for button type specification

 return id;

}

вот почему нам не нужно делать alloc снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...