重新定义extern块(promiseKit)

时间:2015-04-15 16:01:27

标签: ios objective-c promisekit

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

1 个答案:

答案 0 :(得分:1)

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

警惕不常用的错误处理程序,有时在错误发生后会调用一段相当长的时间,具体取决于有问题的promise被解除分配的时间。它是可靠的,但并不总是立即可靠。

99%的时间它会很慢,因为某个对象在你的链中的某个地方仍有一个处理,它很快就会被解除分配,但还没有被释放。