引用类型内部值类型迅速?

时间:2018-12-11 16:45:23

标签: swift class struct

我有一个结构用户和类帐户

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
 }
}

我正在为User创建一个实例并传递给多个方法。很明显,将为用户创建一个副本,但是用户对象内部的account属性如何。

问题:

1。每次将用户实例传递给其他方法时,帐户实例的保留计数将增加吗?

2。在方法结束时(即退出方法之前),将释放用户实例并减少帐户的保留计数?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 每次将用户实例传递给其他方法时,帐户实例的保留计数都会增加吗?
  2.   

正确。

  
      
  1. 在方法结束时,即在退出方法之前,将释放用户实例并减少帐户的保留计数?
  2.   

您有正确的想法,但这不一定是正确的。 User对象可能比方法退出时更早被销毁。但是您是正确的,只要销毁它,保留计数就会减少。

也就是说,保留计数是内部实现细节,基本上没有任何意义。上面所有这些的更好的表达方式是“将对...进行强引用”和“将删除强引用”。我知道听起来几乎就像“保留计数”一样,但实际上可能会或可能不会导致基础数据结构中的retainCount字段实际增加或减少。有很多方法可以避免昂贵的操作。但是您的基本理解是正确的。