プロパティを持つオブジェクトがあり、一部のプロパティを変更すると、多くの計算が行われます。1 つのプロパティを変更してから別のプロパティを変更すると、計算が 2 回実行されます。すべての計算を1回行いたい。私は3つの解決策を見ます:
- メソッドを作成し
commit
ます。しかし、私は余分な方法をしたくありません。 - すべてのプロパティを変更するメソッドを作成します。やりたくないのと同じ理由。そして、将来さらに多くのプロパティを所有する場合はどうすればよいでしょうか。
- 遅延コミットの変更後に遅延を行います。これがどのような結果をもたらすかは本当にわかりません。このようなもの:
.
@interface TestObject : NSObject
@property (nonatomic, assign) float x;
@property (nonatomic, assign) float y;
@end
@implementation TestObject
{
BOOL flag;
}
- (id)init
{
self = [super init];
if(self){
flag = NO;
}
return self;
}
- (void)setX:(float)x
{
_x = x;
[self delayCommit];
}
- (void)setY:(float)y
{
_y = y;
[self delayCommit];
}
- (void)delayCommit
{
if(flag == NO){
flag = YES;
[self performSelector:@selector(commit) withObject:nil afterDelay:0];
}
}
- (void)commit
{
flag = NO;
NSLog(@"Do a lot of calculations....");
}
@end
3 番目の解決策は良い方法ですか? シンプルなインターフェースが欲しい、余分なメソッドは欲しくない。