ぜのぜ

しりとりしようぜのぜのぜのぜ

83日目

日記

にくをやいている

今日書いたコード

class Owner {
    var weak: Weak?
    var unow: Unow?
}

class Weak {
    weak var own: Owner?

    deinit {
        print("Weak")
    }
}

class Unow {
    unowned var own: Owner?

    deinit {
        print("Unow")
    }
}

var owner: Owner? = Owner()
var weak: Weak? = Weak()
var unow: Unow? = Unow()
owner?.weak = weak
owner?.unow = unow

weak?.own = owner
unow?.own = owner

owner = nil
print(weak?.own == nil) // true
print(unow?.own == nil) // runtime error

感想

weakって名前のプロパティ作れるのか.

unownedなオプショナルプロパティを説明する節があった.なにか注意することがあるのかと思って混乱したけど,結局ARCはunownedなプロパティには触らないからユーザが管理するというだけの話でいい気がする.