iOS中assign,copy,retain之間的區別以及w

時間 2021-07-12 15:33:35

1樓:好程式設計師

什麼是assign,copy,retain之間的區別?

assign: 簡單賦值,不更改索引計數(reference counting)。

copy: 建立一個索引計數為1的物件,然後釋放舊物件

retain:釋放舊的物件,將舊物件的值賦予輸入物件,再提高輸入物件的索引計數為1

weak 和strong的區別:

(weak和strong)不同的是 當一個物件不再有strong型別的指標指向它的時候 它會被釋放 ,即使還有weak型指標指向它。

一旦最後一個strong型指標離去 ,這個物件將被釋放,所有剩餘的weak型指標都將被清除。

可能有個例子形容是妥當的。

想象我們的物件是一條狗,狗想要跑掉(被釋放)。

strong型指標就像是栓住的狗。只要你用牽繩掛住狗,狗就不會跑掉。如果有5個人牽著一條狗(5個strong型指標指向1個物件),除非5個牽繩都脫落 ,否著狗是不會跑掉的。

weak型指標就像是一個小孩指著狗喊到:「看!一隻狗在那」 只要狗一直被栓著,小孩就能看到狗,(weak指標)會一直指向它。

只要狗的牽繩脫落,狗就會跑掉,不管有多少小孩在看著它。

只要最後一個strong型指標不再指向物件,那麼物件就會被釋放,同時所有的weak型指標都將會被清除。

使用assign: 對基礎資料型別 (nsinteger,cgfloat)和c資料型別(int, float, double, char, 等等)

使用copy: 對nsstring

使用retain: 對其他nsobject和其子類

nonatomic關鍵字:

atomic是objc使用的一種執行緒保護技術,基本上來講,是防止在寫未完成的時候被另外一個執行緒讀取,造成資料錯誤。而這種機制是耗費系統資源的,所以在iphone這種小型裝置上,如果沒有使用多執行緒間的通訊程式設計,那麼nonatomic是一個非常好的選擇。

2樓:匿名使用者

assign。針對基礎型別(int,float)等。簡單賦值。

strong。強引用。屬性會先儲存新值,釋放舊值。

weak。弱引用。屬性不儲存新值,也不釋放舊值。到屬性指向物件遭到摧毀,屬性值也會清空。

copy。與strong型別。但是不會儲存新值,而是copy一份。目標物件遵守nscopying協議

retain。引用計數+1,當引用計數為0時,物件會被銷燬。

法律中應當和可以之間的區別

3樓:塘西地下鐵

法律中「應當」條款規定的法律主體的義務,如果違反將承擔相應的法律後果;「可以」表述的是法律主體的權利,是否作出一定的法律行為,由法律主體自主決定,不論其最終選擇的是允許範圍內的何種行為,都將得到法律的認可、保護。

4樓:樂題庫知道問答

在法律用語中,應當的效力比可以高。所謂應當,是法定的必須如此,如果不如此就是違法,行為效力會受到影響。所謂可以,是授權性的規定,基本上可以等同於「有權」,你舉的例子就是說把是否追究責任的選擇權交給消費者,法律不強迫消費者一定去追究責任,如果這裡寫成應當,那就是笑話了。

如何實現ios系統中select效果的選擇效果

其實這一般都是用button來實現的,具體思路是在點選前設定一個 點選後狀態改變引起 改變。uibutton checkbox uibuttonalloc initwithframe cgrectzero self.viewaddsubview checkbox checkbox.frame cgr...

iOS日曆中怎樣給事件新增多個提醒

現在在 日曆 中新增事件非常方便了,不用你一個項一個項的填。用自己的語言告訴日曆,它就能明白你的意思。日曆 程式介面 你只需要輸入 什麼時間要做什麼 就可以了 這和ios裝置上siri的智慧程度相當。新增事件時,只需說一句話 電腦準確理解了我的意思 事件成功建立 比如截圖中我輸入的 大後天陪女朋友看...

如何使用硬碟中的ios檔案重灌系統

製作u啟動u盤,將iso系統映象檔案拷貝到u盤中 1 插上製作好的u盤,開機畫面按下啟動快捷鍵,選擇u盤啟動,就可以進入u啟動u盤的主選單介面。2 在pe裝機工具中,選擇系統映象安裝在c盤中,點選確定,3 提醒程式將執行還原操作視窗,單擊確定按鈕,4 進行程式還原過程,等待映象釋放完畢,5 接著重啟...