Есть ли способ создать UIButton, который не был выпущен автоматически, и все еще устанавливал его UIButtonType? - PullRequest
0 голосов
/ 20 октября 2010

UIButton имеет один инициализатор buttonWithType.Но это фабричный метод, который создаст автоматически выпущенный объект.Конечно, мы можем сделать что-то вроде:

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

Но в этом случае я не смогу установить тип кнопки, так как buttonType это свойство только для чтения.

Так что естьВ любом случае, я могу создать кнопки, которые не были автоматически освобождены и все еще устанавливают их тип?

PS:

  1. Использование AutoreleasePool с автоматически выпущенными объектами - хорошая практика.Но у меня нет проблем с автоматически выпущенными объектами.Это всего лишь сомнение.

  2. Я не ищу решения для какого-либо конкретного сценария, поэтому, пожалуйста, не отвечайте на вопросы типа «Почему вы этого хотите?».Мне просто пришло в голову, что это то, что я не могу сделать .. поэтому я спрашиваю ..

Спасибо, Swapnil

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Нет, только +buttonWithType: может создавать эти специальные кнопки.Причина, по которой нет пары +alloc / -init для создания такой кнопки, заключается в том, что они на самом деле реализуются некоторым частным подклассом (например, UIRoundedRectButton).

Если вам нужночтобы сохранить кнопку, используйте -retain.

theButton = [[UIButton buttonWithType:foo] retain];
2 голосов
/ 20 октября 2010

Вы можете использовать инициализатор, а затем отправить объекту сообщение retain, если оно вам все еще нужно.

Я думаю, что причина отсутствия других инициализаторов заключается в том, что кнопки UIB обычно добавляются в виде подпредставления и, таким образом, автоматически получают сообщение retain.

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