Тип ссылки внутри типа значения в Swift? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть структура пользователя и учетная запись класса

struct User
{
  var name: string
  var account: Account
}

Class Account
{
  var balance: Double
  var accountNumber: String
  init(bal: Double, accNum: String)
 {
     self.balance = bal
     self.accountNumber: accNum
 }
}

Я создаю экземпляр для пользователя и передаю несколько методов.Понятно, что копия будет создана для пользователя, но как насчет свойства учетной записи внутри объекта пользователя.

Вопросы:

1.Каждый раз, когда экземпляр пользователя передается другому методу, счетчик сохранения экземпляра учетной записи будет увеличиваться?

2.В конце метода, т. Е. Перед выходом из метода, пользовательский экземпляр будет освобожден, а счет сохранения учетной записи будет уменьшен?

1 Ответ

0 голосов
/ 11 декабря 2018
  1. Каждый раз, когда пользовательский экземпляр передается какому-либо другому методу, счетчик хранения экземпляра учетной записи будет увеличиваться?

Исправить.

В конце метода, т. Е. Перед выходом из метода пользовательский экземпляр будет освобожден, а количество сохраненных учетных записей будет уменьшено?

У вас правильная идея, ноэто не обязательно правда.Объект User может быть уничтожен гораздо раньше, чем при выходе из метода.Но вы правы в том, что всякий раз, когда он уничтожается, счет хранения будет уменьшаться.

При этом счет хранения - это внутренняя деталь реализации, которая практически ничего не значит.Лучший способ сказать все вышесказанное: «будет сделана сильная ссылка на…» и «будет удалена сильная ссылка».Я знаю, что это звучит почти так же, как «сохранить счет», но на самом деле это может или не может привести к тому, что поле retainCount в базовой структуре данных буквально увеличивается или уменьшается.Есть много способов избежать дорогостоящей операции.Но ваше базовое понимание верно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...