Вы все делаете правильно ... почти.
Ваш таймер не срабатывает из-за оператора if.
if (timer) {
timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(boom) userInfo:nil repeats:NO];
}
Здесь оператор if возвращает NO, потому что таймер еще не инициализирован.
Тот факт, что вы делаете его свойством и синтезируете его, не означает, что (timer! = Nil)
Если вы удалите оператор if, он должен работать ...