Метод Deinit никогда не называется – Swift playground

В следующем коде я пытаюсь вызвать метод deinit, освобождая все ссылки на экземпляр Person Class но deinit никогда не вызывается. Зачем?

 class Person{ let name:String init(name:String){ self.name = name println("Person created") } deinit { println("Person \(name) deinit") } } var Mark:Person? = Person(name:"Mark") Mark = nil // Shouldn't the person deinit method be called here? It doesn't. 

Playgrounds Xcode для Swift не работают, как обычные приложения; они не запускаются только один раз. Созданные объекты остаются в памяти и могут быть проверены до тех пор, пока вы не измените код, после чего вся игровая площадка будет переоценена. Когда это произойдет, все предыдущие результаты будут отброшены, и пока все объекты будут освобождены, вы не увидите никаких результатов.

Ваш код верен, но игровые площадки не подходят для тестирования вещей, связанных с управлением памятью.

Вот связанный вопрос SO: утечка памяти в быстрой игровой площадке / deinit {} не называется последовательно

Deinit вызывается, если создать объект, подобный этому

 _ = Person(name:"Mark") 
  • Как создать случайное число в Swift без повторения предыдущего случайного числа?
  • Проверить пустую строку в Swift?
  • Как получить уникальный идентификатор устройства в Swift?
  • Как управлять расстоянием между строками в UILabel
  • Литье по типу Strange Swift
  • Синглтон в Свифт
  • Не удалось запустить приложение в Simulator: во время работы была обнаружена ошибка (Domain = LaunchServicesError, Code = 0)
  • Swift: Как использовать sizeof?
  • Загрузите UIView из nib в Swift
  • Как использовать метод экземпляра как обратный вызов для функции, которая принимает только func или буквальное закрытие
  • Обновление задержки NavigationBar barTintColor iOS10
  • Давайте будем гением компьютера.