我有带有属性的对象,当我更改一些属性时,我会进行大量计算。如果我更改一个属性,然后更改另一个属性,则计算执行 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
第三个解决方案是好的做法吗?我想要简单的界面,我不想要多余的方法。