Если вы хотите убедиться, что метод завершил делать то, что он делает, почему бы не
a) вызвать метод2 в конце метода1
или
b) пойти с executeSelectorOnMainThread: withObject: waitUntilDone: как предложено Дениз Мерт Единчик
или
c) Отправить NSNotification в конце method1 для запуска метода 2 (вы можете добавить наблюдателя для этого уведомленияв method1 и удалите его снова в method2, если method1 также вызывается в другом месте и вы не хотите, чтобы method2 запускался каждый раз)
Вы не должны работать с afterDelay, полагаясь на любую задержку, которую вы укажете ...