gpt4 book ai didi

ios - swift :为什么是 int!成员实例更改为 int?在 block ?

转载 作者:行者123 更新时间:2023-11-28 09:39:48 25 4
gpt4 key购买 nike

我定义了一个成员实例frameCount,类型是Int!,但是当我在 block 中引用它时,它的类型变成了Int?。如果我不打开它,Xcode 会提示编译错误“Value of optional type 'Int?'未展开;您是否打算使用“!”还是“?”?”。

我可以在不打开 block 的情况下使用它。

//Without unwrapping
self.frameCount = self.frameCount + 1
optQueue.async { [weak self] in
//frameCount become Int?.
//If I doesn't unwrap it Xcode will prompt complie error "Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?"
self?.frameCount = (self?.frameCount)! + 1;
}

最佳答案

您的变量不是可选的!你的 self 是。由于您正在进行异步 调用,因此在执行完成时 self 可能不复存在。这就是您将其捕获为 weak 的原因。但是如果你想让它强制运行,你可以删除 [weak self],但它会持有对 self 的强引用并防止它被释放。所以如果你的完成没有被调用,它永远不会被释放。

关于ios - swift :为什么是 int!成员实例更改为 int?在 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52099039/

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