Reference Count for class life cycle and Deinitialization

I am not getting the last line of this code as I am not 100% sure why the reference count becomes 0. I have a guess but I can’t confirm it. Guess: Reference became 0 because variable “john” was reassigned therefore the reference link had to de-reference before pointing to a new instance. But the confusing part is, it has the same firstName and lastName, does that mean it will create a new instance and point to it instead?

Code from Book:
// Person object has a reference count of 1 (john variable)
var john = Person(firstName: “Johnny”, lastName: “Appleseed”)

// Reference count 2 (john, anotherJohn)
var anotherJohn: Person? = john

// Reference count 6 (john, anotherJohn, 4 references)
// The same reference is inside both john and anotherJohn
var lotsaJohns = [john, john, anotherJohn, john]

// Reference count 5 (john, 4 references in lotsaJohns)
anotherJohn = nil

// Reference count 1 (john)
lotsaJohns = [ ]

// Reference count 0!
john = Person(firstName: “Johnny”, lastName: “Appleseed”)

It’s a little confusing here but I take it to mean that the Person created at the top of the block with

// Person object has a reference count of 1 (john variable)
var john = Person(firstName: “Johnny”, lastName: “Appleseed”)

has a reference count of 1 because the created object is referenced by the var “john”. When a new Person object is created and “john” refers to that object instead - even though it is created with the same arguments, “Johnny” and “Appleseed” - then the original Person has zero reference count. The new object, though it has the same values as the old Person, is not the same object. At the end of the block the object referred to by “john” has a reference count of 1, but the original object referred to by john has a reference count of zero. The reason is that "john no longer refers to the first object, but to the second.