我一直在为我的iPhone应用程序编写一个对象类,当另一个部分首次请求它们时,它会延迟加载图像。我决定使图像的加载线程安全,以防止同一图像被意外加载两次,但我对每次运行访问器时都进行@synchronized(self)调用的开销感到好奇:
- (UIImage *)image
{
@synchronized(self)
{
if (_image == nil)
{
_image = [UIImage imageWithContentsOfFile:self.imageUrl];
}
}
return _image;
}
首先检查属性是否为nil,然后再使用@synchronized指令是否更好?
- (UIImage *)image
{
if (_image == nil)
{
@synchronized(self)
{
if (_image == nil)
{
_image = [UIImage imageWithContentsOfFile:self.imageUrl];
}
}
}
return _image;
}
有什么想法吗?