Основное (может быть, единственное) отличие заключается в управлении памятью: как вы сказали, buttonWithType
возвращает автоматически выпущенный UIButton
.Таким образом, вам не нужно беспокоиться о его выпуске.С другой стороны, вы не являетесь его владельцем, поэтому вы не можете освободить его, когда захотите (за исключением, конечно, если вы drain
пул авто-релиза).
Вызывая явно [[UIButton alloc] initWithFrame:frame]
, вместо этого вы динамически распределяете свою кнопку, поэтому вы владеете ею и несете ответственность за ее отпускание.
Если вы по какой-то причине планируете сохранить свою кнопку, то, возможно, вам следует рассмотреть второе решение, но если, как и в этом случае, вы немедленно автоматически ее высвободите, нет большой разницы между двумя способами создания кнопки..