为什么app在设置属性时会陷入无限循环?

Ján*_*nos 0 properties core-data optional ios swift

1)这是我定义的自定义UITableViewCell:

class UserTableViewCell: UITableViewCell {

    var ou: OU? {
    set(newOU) {

        println(newOU)

        self.ou = newOU
    }   
}
Run Code Online (Sandbox Code Playgroud)

2)我正在将NSManagedObject传递给单元格

let s = sth.filteredSetUsingPredicate(NSPredicate(format: "someAttribute = true"))
let ou: OU = s.anyObject() as OU
cell.ou = ou
Run Code Online (Sandbox Code Playgroud)

3)它会多次写出这条日志消息,就像app会陷入无限循环一样.

可选((entity:OU; id:0x7a7e3590; data:{someAttribute = 1;}))

结论

基本上我只需要一个简单的存储属性,没有任何花哨的东西:

class UserTableViewCell: UITableViewCell {

    var ou: OU?
}
Run Code Online (Sandbox Code Playgroud)

gna*_*729 5

之所以发生这种情况,是因为您编写的setter调用了setter.self.ou = ...再次调用setter,所以你得到了一个很好的无限递归.只要筹码持续,就可以了.