【发布时间】:2011-10-16 12:53:48
【问题描述】:
我有这个用于原子保留属性的 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:alienryderflex.com/NSLock.html. -
您是否使用 Instruments 对您的应用进行了分析,以确保这实际上会显着降低您的应用速度?
-
很好奇——你使用 pthread_mutex 了吗?你的发现是什么?
标签: objective-c ios