Что происходит когода мы пытаемся вызвать метод у nil указателя?
Суть
Ничего: сообщение nil — no-op. objc_msgSend первым делом проверяет получателя; если он nil, функция сразу возвращает управление, не ища методов и не бросая исключений. Это сознательное решение языка, унаследованное от Smalltalk, а не undefined behavior.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep