Вот ссылка на другую ветку, которая отвечает на вопрос.
CS193P - Добавление кнопки отмены в калькулятор iOS
Давайте посмотрим, смогу ли я объяснить, почему само.model = nil;
Я собираюсь использовать аналогию с листом бумаги для вашей модели.В этой статье вы можете написать свой стек, а также любые дополнительные сведения, которые может знать ваша модель.
Предполагая, что вы лениво создаете экземпляр своего геттера для модели (как это делал инструктор);Когда вы вызываете self.model, если у вас уже есть лист бумаги с вашей моделью, он сообщит вам, что, если у вас нет листа бумаги для вашей модели, он возьмет чистый лист бумаги и сделает его вашиммодель.
Теперь, когда вы говорите, self.model = nil;Вы говорите, чтобы выбросить лист бумаги ваших моделей.Это означает, что теперь у вас больше есть стек или любая другая вещь, которая есть в вашей модели.
Теперь, когда получатель получает ленивый экземпляр, когда вы в следующий раз запрашиваете свою модель, у него его еще нет., так что он станет для вас совершенно новым.
Так что, возможно, краткое резюме - self.model = nil;не очищает ваш стек, он полностью выбрасывает стек, у вас нет пустого стека, у вас нет стека.
В то время как ваш clearOperandsStack просто очищает стек, так что у вас есть пустой стек.