我一直在为我的iPhone应用程序开发一个对象类,它在应用程序的另一部分首次请求它时加载图像。我决定使图像线程的加载安全,因此不会偶然加载同一图像两次,但是我很好奇每次运行访问器时都会执行@synchronized(self)调用的开销,如下所示:@synchronized(self)有多少开销?
- (UIImage *)image
{
@synchronized(self)
{
if (_image == nil)
{
_image = [UIImage imageWithContentsOfFile:self.imageUrl];
}
}
return _image;
}
首先检查属性是否为零然后使用@synchronized指令会更好吗?
- (UIImage *)image
{
if (_image == nil)
{
@synchronized(self)
{
if (_image == nil)
{
_image = [UIImage imageWithContentsOfFile:self.imageUrl];
}
}
}
return _image;
}
有什么想法?
感谢信息!我的问题是更多关于@ synchronized标签比其他任何东西。只是发现自己想知道开销。 – 2011-04-06 15:53:25