0

我正在使用 PromiseKit(很棒的框架,顺便说一句!)来处理我的应用程序和服务器 API 之间的通信。我想创建某种全局处理程序来响应诸如通知用户我的许多承诺中缺乏网络连接之类的事情。

PMKPromise.h 文件列出了一个未处理的错误处理程序:

/**
Called by PromiseKit in the event of unhandled errors.
The default handler NSLogs the error. Note, your handler is executed
from an undefined queue, unless you manage thread-safe data, dispatch to
a safe queue before doing anything else in your handler.
*/
extern void (^PMKUnhandledErrorHandler)(NSError *);

然后在 PMKPromise.m 文件中实现此类型,尽管 doc 块暗示这可以被覆盖。我的问题是我该如何重新定义这个变量?

复制与 .m 文件中使用的语法相同的语法会给我一个链接器错误

void(^PMKUnhandledErrorHandler)(id) = ^(NSError *error){
    //...
};

==> duplicate symbol _PMKUnhandledErrorHandler
4

1 回答 1

1
PMKUnhandledErrorHandler = ^(id error) {
    // your code here
};

请注意不方便的错误处理程序,有时它会在错误发生后的相当长的一段时间内被调用,具体取决于相关承诺何时被解除分配。它是可靠的,但并不总是立即可靠。

99% 的情况下它会很慢,因为某些对象仍然在链中的某处有一个 promise 的句柄,并且它很快就会被释放但尚未释放。

于 2015-04-18T18:33:18.777 回答