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-CFAQの内容と関連部分を読みました。
また、使用する必要があることも理解していますNSDecimalNumber
が、知りたいことが2つあります。
- やや複雑なクラス(UITableViewに表示されるこの種の財務計算のみ)では、メモリのオーバーヘッドとパフォーマンスの低下は許容できますか?私はCのバックグラウンドがあまりありません...
- のような機能を使うのは面倒で複雑すぎません
decimalNumberByAdding:
か?__add__
Pythonを使用すると、オブジェクトで演算子を使用するように定義するのは簡単でした。からfloat値を取得する必要があります。次に、計算を実行して、 ?NSDecimalNumber
でラップされた結果を返します。NSDecimalNumber
この問題にどのように対処しますか?
シンプルで美しい解決策を探しています!
同じ分野でのもう1つの質問:iPhone Core FoundationCFBoolean
のオブジェクトラッパーですか?BOOL
ご助力ありがとうございます!