NSDecimalNumber,NSDecimalNumberHandler和线程

时间:2012-02-20 22:13:04

标签: objective-c ios

我编写了一个基于财务的应用程序,我需要NSDecimalNumber操作的自定义行为,所以我在应用程序启动时调用[NSDecimalNumber setDefaultBehavior:(MyHandlerSubclass)]。但是,我刚从NSDecimalNumber头文件中发现它需要在每个线程上调用 可能会运行十进制数。

我可以显式调用[(NSDecimalNumber *) performOperation:withBehavior:],每次传递我的MyHandlerSubclass,但它会变得冗长和累人。有没有办法消除冗长,维护setDefaultBehavior:,而不必担心在具有错误行为的不同线程上进行计算?听起来我必须编写自己的包装器才能这样做。

1 个答案:

答案 0 :(得分:2)

  

我写了一个基于财务的应用程序,我需要自定义行为   NSDecimalNumber操作,所以我调用[NSDecimalNumber   应用程序启动时setDefaultBehavior:(MyHandlerSubclass)]。   但是,我刚刚从NSDecimalNumber头文件中发现了它   需要在每个线程上调用十进制数字计算   继续。

在队列环境中似乎无法管理。无法保证任何给定GCD队列可以运行的线程,无论是您自己的创建还是系统提供的队列之一。 (显然,主队列是此规则的一个例外)。

文档没有说明这个限制。文档错误或标题错误......

......这是文档(反汇编是我的朋友)。提交错误。

似乎没有办法避免在调用+ setDefaultBehavior时使用更详细的格式保存:在任何预定的块的开头(覆盖任意线程问题)。

提出一个要求增强的错误,因为当前的行为在基于队列的世界中没有意义(请将错误#放在这里)。