【发布时间】:2018-06-20 00:11:16
【问题描述】:
我在 Fabric 中遇到了指向 Objective-C 第一行的崩溃:
somePromise.then(^ {
// some more code
});
该应用正在使用 PromiseKit。为什么会崩溃?
【问题讨论】:
标签: ios crash objective-c-blocks promisekit
我在 Fabric 中遇到了指向 Objective-C 第一行的崩溃:
somePromise.then(^ {
// some more code
});
该应用正在使用 PromiseKit。为什么会崩溃?
【问题讨论】:
标签: ios crash objective-c-blocks promisekit
答案是:在某些情况下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
【讨论】: