assign 和 weak的區別

2021-08-03 05:32:55 字數 296 閱讀 5089

assign 和weak都是弱引用型別

用weak宣告的變數在棧中會自動清零,賦值為nil

用assign 宣告的變數在棧中可能不會自動賦值為nil,會造成野指標錯誤

在定義乙個類的property時候,為property選擇

strong

還是copy

特別注意和研究明白的,如果property是nsstring或者nsarray及其子類的時候,最好選擇使用copy屬性修飾。為什麼呢?這是為了防止賦值給它的是可變的資料,如果可變的資料發生了變化,那麼該property也會發生變化

weak和assign的區別

工作之後,一直使用arc,weak作為property的關鍵字之一,代表弱引用,物件的引用計數不改變。從記憶體管理上說這點和assign是相同的。倆者的不同在於 1.weak 此特質表明該屬性定義了一種 非擁有關係 nonowning relationship 為這種屬性設定新值時,設定方法既不保留...

weak和assign的區別

weak比assign多了乙個功能就是當屬性所指向的物件消失的時候 也就是記憶體引用計數為0 會自動賦值為nil,這樣再向weak修飾的屬性傳送訊息就不會導致野指標操作crash import viewcontroller.h inte ce viewcontroller property nona...

weak和assign的區別,以及使用場景

相同點 assgin和weak均表明該屬性定義了一種 非擁有關係 即在為此種屬性設定新值時,既不保留新值,也不釋放舊值。區別 1 weak在物件銷毀時,屬性值會置為nil,而assign只會執行對 純量型別 做簡單的賦值操作。2 assgin可以用於非oc物件,例如float bool int等型別...