Создание кнопки программно - PullRequest
0 голосов
/ 01 февраля 2012

Я видел 2 способа создания кнопки.

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(10, 220, 150, 30)];

и

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

Первый случай - это обычный способ создания объекта кнопки.Я выделил и инициализировал экземпляр кнопки, и я должен отпустить его.Я действительно смущен вторым способом.У меня есть несколько вопросов по этому поводу.

  1. Создан ли экземпляр кнопки в этом случае?
  2. Каков счетчик удержания этой кнопки?
  3. Должен ли я отпустить этокнопка?

Ответы [ 4 ]

7 голосов
/ 01 февраля 2012

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

  1. Да, экземпляр кнопки создан.
  2. Сохранение счетчика будет таким, как вы добавляете / сохраняете.
  3. Вам не нужноотпустить кнопку, если вы не создали ее с помощью alloc.
2 голосов
/ 01 февраля 2012

Создается ли экземпляр кнопки в этом случае?

Да, создается экземпляр.

Каков счет сохранения этой кнопки?

Вероятно, один счет удержания равен единице, иначе жизненный цикл от него избавится.

Должен ли я отпустить эту кнопку?

НетВы не должны автоматически освобождать объект.

1 голос
/ 01 февраля 2012

От: http://cocoadevcentral.com/d/learn_objectivec/

При управлении локальной памятью:

Существует только одно правило: если вы создаете объект с помощью alloc или copy, отправьте ему сообщение об окончании или автообновлении в концефункции.Если вы создаете объект любым другим способом, ничего не делайте.

  1. Да, локальный экземпляр создается
  2. 1, но будет равен 0, когда функция завершится
  3. Нетобъект будет помечен для освобождения, когда функция завершится при условии, что вы не вызываете retain для него.
0 голосов
/ 01 февраля 2012

1.) Да, экземпляр кнопки будет создан независимо от того, выделите ли вы его или с помощью фабричного метода. В обоих случаях будет создан экземпляр кнопки

2.) Число отсчетов будет равно 1 для текущего цикла / цикла выполнения. Затем при следующем цикле объект будет автоматически разблокирован. Таким образом, retainCount будет равно 0. (Примечание: если NSLogging a retainCount 0, это приведет к сбою приложения)

3.) Нет, вам не нужно отпускать кнопку, созданную с помощью заводских методов, они отпускаются автоматически.

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