0

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

4

0 に答える 0