События интерфейса пользователя (нажатия кнопок и т. Д.) Обрабатываются одним за другим основным потоком. Если вы специально не вызываете свой метод IBAction из нескольких потоков, он будет не выполняться одновременно. Другими словами, действия, запускаемые событиями пользовательского интерфейса, выполняются последовательно. Каждое действие будет завершено до начала следующего.
Нет необходимости писать отдельные (но идентичные) методы для ваших кнопок, потому что обработка события по событию основного потока будет гарантировать, что метод действия вызывается последовательно, один раз для каждого нажатия кнопки. Если вы напишите отдельный метод действия для каждой кнопки, эти методы действия будут все еще выполняться по одному за раз.