3 回答

TA貢獻1773條經(jīng)驗 獲得超3個贊
在Objective-C中,@synchronized塊自動為您處理鎖定和解鎖(以及可能的異常)。運行時動態(tài)地生成一個NSRecursiveLock,它與您正在同步的對象相關(guān)聯(lián)。Apple文檔更詳細(xì)地解釋了它。這就是為什么你沒有看到NSLock子類的日志消息 - 你同步的對象可以是任何東西,而不僅僅是一個NSLock。
基本上,@synchronized (...)是一種簡化代碼的便捷結(jié)構(gòu)。像大多數(shù)簡化的抽象一樣,它具有相關(guān)的開銷(將其視為隱藏成本),并且很好地意識到這一點,但是無論如何使用這樣的構(gòu)造時,原始性能可能不是最高目標(biāo)。

TA貢獻1757條經(jīng)驗 獲得超7個贊
其實
{
@synchronized(self) {
return [[myString retain] autorelease];
}
}
直接轉(zhuǎn)換為:
// needs #import <objc/objc-sync.h>
{
objc_sync_enter(self)
id retVal = [[myString retain] autorelease];
objc_sync_exit(self);
return retVal;
}
此API自iOS 2.0起可用并使用...
#import <objc/objc-sync.h>
- 3 回答
- 0 關(guān)注
- 721 瀏覽
添加回答
舉報