Помещение self
в блок ... не совсем чревато опасностью, но, вероятно, приведет к тому, чего вы не ожидаете.Здесь self
относится к тому, что он делает в области непосредственно за пределами блока, а не к контроллеру представления, который вы выполняете в блоке.В зависимости от того, когда исполняется блок, он может не иметь navigationController
в то время.
Я бы предложил либо поискать навигационный контроллер внутри вашего блока другим способом (это корневой контроллер приложения, возможно?), помещая его в локальную переменную вне блока, на который вы затем ссылаетесь, или заставляя контроллер представления, ответственный за выполнение блока, передавать себя в качестве аргумента блоку.