これを回避できますか、コンパイラは基本的に私に代わってほぼ同じ方法で 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あまり頻繁にアクセスされないこれら2つの特定のプロパティについては、そのような時期尚早の最適化は役に立たないと思いますが、これが内部でどのように機能するのか疑問に思うので、質問はおそらくまだ有用です(他の人にとってそうではないにしても、私にとってはそうです;-)