2016-05-20 3 views
1

Я учусь на быстрое программирование laguage, в настоящее время на тему сбора garbigeГде хранится имя значения? Как я могу просмотреть его?

class Person{ 
    var firstName: String 
    var lastName: String 

    init(firstName: String, lastName: String){ 
     self.firstName = firstName 
     self.lastName = lastName 
    } 

    deinit{ 
     print("\(firstName) \(lastName) is being removed from momory!") 
    } 
} 


var john = Person(firstName: "Johhny", lastName: "Appleseed") 

john = Person(firstName: "Frank", lastName: "koin") 

john = Person(firstName: "kayano", lastName: "izuku") 

actuall значение объекта john, AKA "Johhny" "Appleseed" "Франк" ... были сохраненный в кучном пространстве, и до того, как Swift удалит объект из памяти, функция deinit может указать мне, какой объект будет удален.

Question1: Как насчет названия объекта, например джон здесь, где она хранится, стек или кучу? И могу ли я его уничтожить?

Вопрос2: Может кто-нибудь рекомендовать мне некоторые книги по основам науки о компьютерах, чтобы я мог обладать некоторыми знаниями, подобными этому, или тому, что есть, как стек, как работает компилятор и с.

комментарий: Я думаю, что john = nil может сделать Destory работу, поправьте меня, если я ошибаюсь

ответ

0

Название john требуется только во время компиляции и не то, что вокруг во время выполнения на всех. Однако, если вы имеете в виду переменную john, которая ссылается на объект, это то, что концептуально находится в стеке (доступно только в этой области), но есть много способов, которыми компилятор мог бы оптимизировать это, поэтому он мог просто быть в регистре или устранены (поскольку вы никогда не используете его после назначения)

Кроме того, чтобы развеять недоразумение, которое у вас есть - это не сбор мусора. Swift реализует автоматический подсчет ссылок (ARC) - который автоматически активирует память неиспользуемых объектов, но отличается. Главное, с чем вы столкнулись, это то, что ARC не может обрабатывать циклическую ссылку (т. Е. Два объекта, ссылающиеся друг на друга), в то время как сборщики мусора могут.

+0

Спасибо за ваше объяснение. – SLN

Смежные вопросы