gpt4 book ai didi

swift - 在 viewDidLoad 中具有弱 self 是可以的

转载 作者:行者123 更新时间:2023-11-30 13:13:50 24 4
gpt4 key购买 nike

我正在从 cocoaPod 实现这个下拉菜单。它很容易实现,而且我已经成功了。 https://github.com/PhamBaTho/BTNavigationDropdownMenu但是,按照说明,我在 viewDidLoad 中实现了以下功能

        self.navigationItem.titleView = menuView
menuView.didSelectItemAtIndexHandler = {[weak self] (indexPath: Int) -> () in
print("Did select item at index: \(indexPath)")

if indexPath == 0 {
print("Closest")
self?.sortByDistance()
} else if indexPath == 1 {
print("Popular")
self?.sortByRatings()
} else if indexPath == 2 {
print("My Posts")
self?.myPosts()
} else {

}

我有点担心,因为 Xcode 告诉我要放一个 ?或一个!就在 self 之后,这在我的程序的其他地方从未做过。有人可以建议这是否完全可以接受或者有更好的方法吗?这似乎很奇怪,强制打开或将我的 VC 作为可选...?

最佳答案

{[weak self] ... 的要点是 Controller 可能会被释放,并且您不希望此 block 强烈捕获它并将其保留在内存中(如果它已被释放)由任何呈现它的东西释放。因此,对 self 的引用可能为零。

所以,您绝对不想使用 !,您应该使用 ?if let 检查。

关于swift - 在 viewDidLoad 中具有弱 self 是可以的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38439835/

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