Когда вы делаете это:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
Вы создаете кнопку размером 100x100, но еще не добавляете ее в представление. Затем, когда вы делаете это:
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
вы создаете новую кнопку размером 0x0 и по-прежнему не добавляете ее в представление; первая кнопка останется в памяти навсегда. Затем, когда вы делаете это:
[self.view bringSubviewToFront:button];
вы говорите представлению перенести новую кнопку в переднюю часть представления, но ее пока нет на экране. То, что вы действительно хотели сделать, это:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100, 100, 100, 100);
[self.view addSubview:button];
Это создает кнопку, устанавливает ее рамку, а затем добавляет ее к вашему виду.