gpt4 book ai didi

ios - 作为实例变量存储的 block 变为零

转载 作者:可可西里 更新时间:2023-11-01 05:55:20 25 4
gpt4 key购买 nike

我正在尝试将 block 存储在项目的实例变量中。这是我声明实例变量的地方:

@property (nonatomic, copy)void (^loginCompletedTask)();

我正在通过调用此方法来分配变量:

- (void)requireLoggedInForBlock:(void (^)())completion {
self.loginCompletedTask = completion;

// Display an alert view that requires username and password input
}

在该方法的第一行之后,self.loginCompletedTask 为非 nil 并以 NSMallocBlock 类型登录调试器。然而,当我真正需要在登录警报 View 返回后运行该 block 时,它已变为 nil。

我试过:

  • strong 代替 copy 声明,
  • 设置为 self.loginCompletedTask = ^{completion();};,
  • 直接设置变量,而不是使用属性 (_loginCompletedTask = ...)。

我错过了什么?

最佳答案

事实证明,这与错误存储 block 无关。我实际上是在创建一个与存储 block 的类相同的新对象,但忘记复制实际的 block 。因此,被命中并注销 self.loginCompletedBlock 值的方法正在被另一个对象接收,而不是分配变量开始的对象。

感谢大家的帮助,SO 用户如此愿意提供帮助总是让我感到惊讶。

关于ios - 作为实例变量存储的 block 变为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316971/

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