我编写了一个基于财务的应用程序,我需要NSDecimalNumber操作的自定义行为,所以我在应用程序启动时调用[NSDecimalNumber setDefaultBehavior:(MyHandlerSubclass)]
。但是,我刚从NSDecimalNumber头文件中发现它需要在每个线程上调用 可能会运行十进制数。
我可以显式调用[(NSDecimalNumber *) performOperation:withBehavior:]
,每次传递我的MyHandlerSubclass,但它会变得冗长和累人。有没有办法消除冗长,维护setDefaultBehavior:,而不必担心在具有错误行为的不同线程上进行计算?听起来我必须编写自己的包装器才能这样做。
答案 0 :(得分:2)
我写了一个基于财务的应用程序,我需要自定义行为 NSDecimalNumber操作,所以我调用[NSDecimalNumber 应用程序启动时setDefaultBehavior:(MyHandlerSubclass)]。 但是,我刚刚从NSDecimalNumber头文件中发现了它 需要在每个线程上调用十进制数字计算 继续。
在队列环境中似乎无法管理。无法保证任何给定GCD队列可以运行的线程,无论是您自己的创建还是系统提供的队列之一。 (显然,主队列是此规则的一个例外)。
文档没有说明这个限制。文档错误或标题错误......
......这是文档(反汇编是我的朋友)。提交错误。
似乎没有办法避免在调用+ setDefaultBehavior时使用更详细的格式保存:在任何预定的块的开头(覆盖任意线程问题)。
提出一个要求增强的错误,因为当前的行为在基于队列的世界中没有意义(请将错误#放在这里)。