IOS中Retain 和 Copy 之間的區別

發布 科技 2024-02-08
4個回答
  1. 匿名使用者2024-02-05

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

    retain:釋放舊物件,將舊物件的值分配給輸入物件,並將輸入物件的索引計數提高到 1

    那麼這到底是什麼意思呢?

    copy 實際上會建立乙個相同的物件,而 retain 則不是

    例如,位址為 0 1111、內容為 @“str” 的 nsstring 物件。

    複製到另乙個 nsstring 後,位址為 0 2222,內容相同,新物件保留 1,舊物件保持不變。

    保留到另乙個 nsstring 後,位址相同(建立指標,指標複製),內容當然相同,物件的保留值為 +1

    也就是說,retain 是指標的副本,而 copy 是內容的副本。

  2. 匿名使用者2024-02-04

    retain 是乙個淺拷貝,不會更改它指向的物件,並且 MRC 的引用計數器增加了 1。

    copy,即深拷貝,重新拷貝乙個物件,原物件不變,新複製的物件,引用計數器加1

  3. 匿名使用者2024-02-03

    回覆,錯了,copy 和 mutablecopy 是深拷貝,而且 copy 也是可以修改的,可以嘗試在修改中複製乙個字串,結果可以更改,不影響原來的字串,原來的字串釋放後還在,所以房東真的是搞錯了!!

  4. 匿名使用者2024-02-02

    Assign 用於簡單的資料型別,比如物件的 nsinteger、double、bool、retain 和 copy,copy 用於 A 指向乙個物件時,B 也想指向同乙個物件,如果使用 assign,如果 A 釋放,然後呼叫 B 會崩潰,如果使用 copy,A 和 B 各有自己的記憶體, 你可以解決這個問題。

    retain 會在計數器中增加乙個,這樣也可以解決 assign 的問題。

    另外:atomic 和 nonatomic 用於確定編譯器生成的 getter 和 setter 是否為原子操作。 在多執行緒環境中,原子操作是必要的,否則可能會導致錯誤的結果。

    新增 atomic 後,setter 函式將如下所示:if (property !)。= newvalue)

相關回答
8個回答2024-02-08

Android 是一種基於 Linux 的開源作業系統,主要用於可攜式裝置。 目前,沒有統一的中文名稱,中國大陸更多的人使用Android(非官方)或Anzhi(官方)。 Android作業系統最初由Andy Rubin開發,最初主要支援手機。 >>>More

11個回答2024-02-08

就我個人而言,我認為Android開發會更好。

因為Android開發的限制比較低,開發氛圍濃厚,市場大。 但是,iOS開發有一定的要求,需要美國銀行卡(國內開發者不清楚),並且必須支付年費。 >>>More

3個回答2024-02-08

檔案類用於複製、移動、重新命名、建立、開啟、刪除和追加到檔案等典型操作。 還可以使用檔案類來獲取和設定有關檔案建立、訪問和寫入操作的檔案屬性或日期時間資訊。 >>>More

31個回答2024-02-08

這個時候,你應該擠出一些時間,放下你正在做的事情,出去走走,做一些讓你開心的事情,想想你的目標。 冷靜下來後,想想你的問題是什麼,如果你不知道,你要有勇氣和老師溝通,老師非常歡迎你去,他們也可以給你一些建議。

5個回答2024-02-08

扭矩是發動機效能的重要引數,是指發動機運轉時曲軸端輸出的平均扭矩,俗稱發動機的“旋轉力”。 扭矩越大,發動機輸出的“強度”越大,曲軸轉速變化越快,汽車的爬坡能力、起步速度和加速度就越好。 扭矩隨發動機轉速的變化而變化,過高或過低,扭矩不是最大值,只有在一定轉速或一定速度範圍內才有最大扭矩,這個範圍是標明最大扭矩時給出的速度或速度範圍。 >>>More