iOS 溫故知新(一)

2021-09-23 20:41:48 字數 1279 閱讀 8878

1、什麼情況使用 weak 關鍵字,相比 assign 有什麼不同?

什麼情況使用 weak 關鍵字?

在 arc 中,在有可能出現迴圈引用的時候,往往要通過讓其中一端使用 weak 來解決,比如: delegate **屬性

自身已經對它進行一次強引用,沒有必要再強引用一次,此時也會使用 weak,自定義 iboutlet 控制項屬性一般也使用 weak;當然,也可以使用strong。

不同點:

weak 此特質表明該屬性定義了一種「非擁有關係」 (nonowning relationship)。為這種屬性設定新值時,設定方法既不保留新值,也不釋放舊值。此特質同assign類似, 然而在屬性所指的物件遭到摧毀時,屬性值也會清空(nil out)。 而 assign 的「設定方法」只會執行針對「純量型別」 (scalar type,例如 cgfloat 或 nslnteger 等)的簡單賦值操作。

assign 可以用非 oc 物件,而 weak 必須用於 oc 物件

2、怎麼用 copy 關鍵字?

用途:1.nsstring、nsarray、nsdictionary 等等經常使用copy關鍵字,是因為他們有對應的可變型別:nsmutablestring、nsmutablearray、nsmutabledictionary;

用 @property 宣告 nsstring、nsarray、nsdictionary 經常使用 copy 關鍵字,是因為他們有對應的可變型別:nsmutablestring、nsmutablearray、nsmutabledictionary,他們之間可能進行賦值操作,為確保物件中的字串值不會無意間變動,應該在設定新屬性值時拷貝乙份。

2.block 使用 copy 是從 mrc 遺留下來的「傳統」,在 mrc 中,方法內部的 block 是在棧區的,使用 copy 可以把它放到堆區.在 arc 中寫不寫都行。

3、@protocol 和 category 中如何使用 @property

在 protocol 中使用 property 只會生成 setter 和 getter 方法宣告,我們使用屬性的目的,是希望遵守我協議的物件能實現該屬性

category 使用 @property 也是只會生成 setter 和 getter 方法的宣告,如果我們真的需要給 category 增加屬性的實現,需要借助於執行時的兩個函式:

objc_setassociatedobject

objc_getassociatedobject

溫故知新 ROWTYPE

rowtype 相當於資料庫表裡的一行資料記錄的變數型別。declare 定義乙個emp表裡的一行記錄的資料型別的變數 v emp emp rowtype begin 查詢的emp表裡的資料列必須與v emp的列順序以及個數保持一致 select empno,ename,job,mgr,hireda...

vue 溫故知新

v cloak指令 解決變數閃爍問題 v if isshow 是插入或刪除節點 v show isshow 是隱藏或顯示節點 v bind data m msg 或 data m msg 繫結屬性 v bind key v.id 繫結乙個資料唯一值,用於虛擬dom演算法,優化渲染效率 v on cl...

溫故知新系列

我從事windows phone開發一年多來,終日忙於開發應用,每每有所收穫也沒有時間思考總結。最近實習即將結束,同時也看清了真實的生活,痛定思痛,決定好好整理自己所學所得,同時也靜下心來好好學習一下一直欠缺的知識。溫故而知新,可以為師矣。此番總結,不求為師,但求能看清自己,共勉共勉。此溫故知新系列...