ios - PromiseKit AnyPromise 然后崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010

标签 ios crash objective-c-blocks promisekit

我在 Fabric 中发生崩溃,指向 Objective-C 中的第一行:

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

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

最佳答案

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

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

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

因此:在调用 then 之前确保 promise 不是 nil

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

关于ios - PromiseKit AnyPromise 然后崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50938495/

相关文章:

java - Android 在 Button.setEnabled(false) 上崩溃

objective-c - block , self ,保留循环

ios - 在 iOS 中使用 GCD 实现临界区

java - 应用程序在模拟器中启动时崩溃

ios - 幻灯片菜单不起作用

java - ActivityThread 从 ArrayList 中删除某些内容后导致程序崩溃

objective-c - 返回后使用 NSOperationQueue 延迟释放 malloc'd void*

iOS 在 afnetworking 2.0 成功和失败 block 中设置属性时出现问题

ios - 在 navigationController 下面创建一个带有 segmentController 的 pageViewController

ios - 在 Swift 中单击按钮而不释放触摸