【发布时间】:2018-04-13 10:27:19
【问题描述】:
class User: Codable {
//MARK:- Properties
var firstName: String?
var lastName: String?
weak var friend: User?
enum CodingKeys: String, CodingKey {
case firstName = "first"
case lastName = "last"
case friend
}
}
User 类有一个friend 属性,该属性将再次属于User 类型。因此,为了避免任何保留周期,我将其视为弱变量。但是当 JSONDecoder 解码 json 时,用户实例的朋友属性总是 nil。如果我在这种情况下把朋友当作弱者是错误的?如果正确,那么该值将如何插入到用户的朋友属性中。
另请阅读weak variable is intermediately nil。如果我不使用weak,会有保留周期吗?
【问题讨论】:
-
为什么你的变量很弱?必须是强,默认没有弱
-
如果朋友是强类型,不会有任何保留周期吗?由于 User 具有对friend 的字符串引用,并且friend 具有对 User 的强引用。
-
检查我的答案
-
@ReinierMelian 谢谢,我现在很清楚保留周期