【问题标题】:PromiseKit AnyPromise then crash EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010PromiseKit AnyPromise 然后崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010
【发布时间】:2018-06-20 00:11:16
【问题描述】:

我在 Fabric 中遇到了指向 Objective-C 第一行的崩溃:

somePromise.then(^ {
  // some more code
});

该应用正在使用 PromiseKit。为什么会崩溃?

【问题讨论】:

    标签: ios crash objective-c-blocks promisekit


    【解决方案1】:

    答案是:在某些情况下somePromise 可能是nil。不过,在 Objective-C 中调用 nil 上的方法(或“向 nil 发送消息”)应该没问题,对吧?

    好吧,在这种情况下,代码实际上并没有尝试向 nil 发送 Objective-C 消息。相反,它正在尝试执行nil 的块。就像这样做:

    void (^block)() = nil;
    block();  // CRASH!
    

    所以:在调用 then 之前确保 promise 不是 nil

    感谢@mxcl 在这里为我提供解决方案:https://github.com/mxcl/PromiseKit/issues/344#issuecomment-167020593

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 2023-03-23
      • 1970-01-01
      • 2021-09-29
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2021-03-07
      相关资源
      最近更新 更多