我已经阅读了很多关于 NSDecimal、NSNumber、NSNumberDecimal、CFNumber 的内容……对我来说它开始成为一种丛林。
基本上,我正在尝试创建一个简单的模型类来处理简单的计算,比如这个:
#import <Foundation/Foundation.h>
@interface Test : NSObject
{
float rate;
float amount;
int duration;
}
- (float)capitalizedAmount;
@end
@implementation Test
- (float)capitalizedAmount {
return (amount*pow((1.0+rate),duration));
}
@end
我想用它们的名字作为字符串来访问这些方法和设置器,因为我计划有很多像这样的其他类,而且我只保留一个字段列表来进行键值编码。
// This is just the desired behavior
// This evidently won't work with the previous class definition
Test *obj = [[Test alloc] init];
[NSNumber numberWithInt:10]
...
float r;
r = [obj performSelector:NSSelectorFromString(@"capitalizedAmount")];
我知道这是不可能的,performSelector:
它将返回一个对象,因此capitalizedAmount
应该返回一个对象。我NSInvocation
在 comp.lang 上的 Objective-C 常见问题解答中阅读了有关内容和相关部分。
我也知道我应该使用NSDecimalNumber
,但有两件事我想知道:
- 对于更复杂的类(只有这种财务计算,在 UITableView 中显示),内存开销和性能损失是否可以接受?我在C方面没有太多背景...
- 使用类似的功能是不是太挑剔和复杂了
decimalNumberByAdding:
?使用 Python,很容易定义__add__
对对象使用运算符。我应该从 获取浮点值NSDecimalNumber
,然后进行计算并返回包含在 中的结果NSDecimalNumber
吗?你会如何处理这个问题?
我正在寻找一个简单而漂亮的解决方案!
只是同一领域的另一个问题:CFBoolean
对象包装器是否适用BOOL
于 iPhone Core Foundation?
非常感谢您的帮助!