我有一个用于原子保留属性的getter/setter对:
- (FileManager*)fileManager {
@synchronized(self) {
if (fileManager) {
return fileManager;
}
FileManager *fm = [[FileManager alloc] init];
self.fileManager = fm;
[fm release];
return fileManager;
}
}
- (void)setFileManager:(FileManager *)newFileManager {
@synchronized(self) {
[fileManager release];
fileManager = [newFileManager retain];
}
}
现在有人说@synchronized(self)非常慢,而NSLock则快得多。他还说,通常使用的神奇@synthesize实现并不使用@synchronize(self),而是使用更高效的东西代替。
那么,在这种情况下,这种神秘的魔法是什么样子的呢?
NSLock
: http://alienryderflex.com/NSLock.html - thomas