gpt4 book ai didi

ios - 在 Swift 中捕获 [weak self] 的 Realm 通知

转载 作者:可可西里 更新时间:2023-11-01 01:30:19 24 4
gpt4 key购买 nike

在 Swift 的 Realm 文档中,关于 notifications 的部分有这个示例代码:

class ViewController: UITableViewController {
var notificationToken: NotificationToken? = nil

override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm()
let results = realm.objects(Person.self).filter("age > 5")

// Observe Results Notifications
notificationToken = results.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in
guard let tableView = self?.tableView else { return }
// ... some code removed here ...
}
}

deinit {
// notificationToken?.invalidate() in Realm 10.12
notificationToken?.stop()
}
}

我想知道为什么这里使用[weak self]而不是[unowned self]。在什么情况下 self 可以为 nil? (在到达 deinit 之前)

最佳答案

在这种特定情况下,它永远不可能是nil,因为在调用stop() 之后将永远不会调用通知 block ,并且unowned会没事的。 weak 的使用只是为了在有人将代码复制并粘贴到看似相似的情况下使其更加健壮,但实际上并不能保证 self 永远不会

关于ios - 在 Swift 中捕获 [weak self] 的 Realm 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com