2012-02-01 2 views
0

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

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

и

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

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

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

retainCount бесполезен. Не называйте это или не пытайтесь интерпретировать возвращаемое значение. – bbum

ответ

7

Надеется, что это помогает:

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

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

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

Какое значение считается удерживающей кнопкой этой кнопки?

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

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

Нет, вы не должны автореализовать объект.

1

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

О местном управлении памятью:

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

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

по определению, keepCount никогда не может быть равен нулю. По соглашению абсолютный saveCount не имеет смысла. – bbum

0

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

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

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

+0

по определению, keepCount никогда не может быть равен нулю. По соглашению абсолютный saveCount не имеет смысла. Кнопка будет только автореализована по крайней мере один раз в одной из строк кода OP. – bbum

Смежные вопросы