PromiseKit AnyPromise 然后崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010

Posted

技术标签:

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

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

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

该应用正在使用 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

【讨论】:

以上是关于PromiseKit AnyPromise 然后崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010的主要内容,如果未能解决你的问题,请参考以下文章

然后在 Promisekit 中重新加载 tableview

PromiseKit 手动安装

PromiseKit 3.0:用循环链接

如何在 Swift 中使用 PromiseKit 和 Firebase?

保存 promise 实现和拒绝 promisekit

While Loop 在 Promisekit 完成运行并在 Swift 中返回正确的值之前递增并重新运行