我可以摆脱这个吗,或者编译器会代表我以同样的方式优化 BOOL 原子?
@interface IDBWebpValidationOperation()
// I suppose I could get away with nonatomic properties cause I write single byte properties
@property (assign, nonatomic, getter = isExecuting) BOOL executing;
@property (assign, nonatomic, getter = isFinished) BOOL finished;
@end
@implementation IDBWebpValidationOperation
@synthesize executing = _executing;
@synthesize finished = _finished;
-(BOOL)isFinished
{
return _finished;
}
- (void)setFinished:(BOOL)finished {
[self willChangeValueForKey:@"isFinished"];
_finished = finished;
OSMemoryBarrier();
[self didChangeValueForKey:@"isFinished"];
}
-(BOOL)isExecuting
{
return _executing;
}
- (void)setExecuting:(BOOL)executing {
[self willChangeValueForKey:@"isExecuting"];
_executing = executing;
OSMemoryBarrier();
[self didChangeValueForKey:@"isExecuting"];
}
PS 对于这两个不经常访问的特定属性,我猜这种过早的优化是没用的,但我想知道这在幕后是如何工作的,所以这个问题可能仍然有用(对我来说,如果不是其他任何人的话;-)