ピヨピヨ日記 シンガポール編

シンガポール生活の日記とかいろいろ

UIButton の挙動がちょっとわからない

@IBAction func buttonDidPush(sender: UIButton) {
    print("\(sender.titleLabel?.text) was pushed")

    sender.titleLabel?.text = nil
    print("\(sender.titleLabel?.text) was pushed")

    sender.titleLabel?.text = "piyo"
    sender.titleLabel?.text = nil
    print("\(sender.titleLabel?.text) was pushed")

}

 

上記のようなコードを実行すると、下記のようなログが出力される。

 

Optional("Button") was pushed
Optional("Button") was pushed
nil was pushed

 

なぜ最初の sender.titleLabel?.text = nil では nil がセットされずに、一度文字列をセットしてからだと nil がセットされるのでしょうか?

ちゃんと Swift 勉強してないからわからないのか、UIButton の実装上こんな挙動をする余地があるのかちょっとわからない。。