事先說好 ?前不久看到 @sunnyxx 想找一個性取向正常的實習生幫他分擔一點工作量,當想起他和 @ibireme 秀的親密自拍后我就知道事情并沒有這么簡單→_→。但是作為...

事先說好 ?前不久看到 @sunnyxx 想找一個性取向正常的實習生幫他分擔一點工作量,當想起他和 @ibireme 秀的親密自拍后我就知道事情并沒有這么簡單→_→。但是作為...
po主理解錯了。atomic是絕對安全的。
我們知道,在64位的操作系統下,所有類型的指針,包括void * 都是占用8個字節的。超過4個字節的基本類型數據都會有線程并發的問題。
那所有的指針類型都會有這個問題。
以oc 下的 NSArray * 為例子,如果一個多線程操作這個數據,會有兩個層級的并發問題
1、指針本身
2、指針所指向的內存
指針本身也是占用內存的,并且一定是8個字節,第二部分,指針所指向的內存,這個占多少字節就不一定了,有可能非常大,有可能也就1個字節
所以我們考慮NSArray * array 這個數據array 多線程操作的時候,必須分成兩部分來描述,一個是&array這個指針本身,另一個則是它所指向的內存 array
大家注意下 &array 和 array 的區別 ,其實不用糾結,你就想象現在有兩塊內存,一塊是8字節,一塊n字節,8字節里面放的值,就是n字節內存的首地址,
ok 現在聯系上atomic,如果用@property(atomic)NSArray *array 修飾之后,會有什么影響?網上說的很多,不再贅述,我只想從內存的角度來解釋這個過程
首先第一點,你要記住,@property(atomic)NSArray *array 其實修飾的是這個指針,也就是這個8字節內存,跟第二部分數據n字節沒有任何關系,被atomic 修飾之后,你不可能隨意去多線程操作這個8字節,但是對8字節里面所指向的n字節沒有任何限制!這就是所有網絡上所說的 atomic 不安全的真相 !!!
我們來看一下,這能怪atomic? 本身你修飾的是一個指針,并且atomic 已經完美的履行了它的指責,你現在不可能對這個8字節進行無序的多線程操作,這就夠了呀!atomic沒有任何鳥問題。有問題的是人,你本身并未對n字節做任何的限制,所以把問題怪罪到atomic 上真的是很不合理
四步走: 一、封裝自己的輪子 創建自己的工程,編寫代碼。 pod lib create 工程名稱 給自己的項目打上tag git tag -a 0.0.1 -m 'relea...
注:歡迎大家可以關-注 Wei-Xin 公-眾-號 :Style月月專欄,與簡書同步更新~ Swift-進階 01:Swift源碼編譯[https://www.jianshu...
花時間寫了個Demo,包含比較全面從UIView,UILabel,UIImageView的自適應到UITextView,UITableView,UICollectionVie...
有時候我們需要直接獲取到當前顯示的UINavigationController,以便于后續操作,獲取方法如下。此方法可以獲取present出來的UINavigationCon...
很多人弄不懂這四個名詞,網上也有很多的誤導。對于線程死鎖更是解釋的五花八門、煞有介事的樣子。 一.引出此文的元兇---網上的曲解 經過我的代碼驗證,事實是只寫: 也會造成死鎖...
作為一個資深(自認為)iOS程序猿,會經常用到輪播圖,但是總是感覺自己實現要比直接用別人的要方便一點,并且有一些需求需要深度定制,于是想著自己封裝一個可以定制化的輪播圖庫JC...