我一直在爲我的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