iOS assign修飾物件型別會怎樣?

2021-08-22 13:46:04 字數 240 閱讀 1437

首先我們需要明確,物件的記憶體一般被分配到堆上,基本資料型別和oc資料型別一本被分配在棧上。

如果用assign修飾物件,當物件釋放後(因為不存在強引用,離開作用域物件記憶體可能被**),指標的位址還是存在的,也就是說指標並沒有被置為nil,下次再訪問該物件就會造成野指標異常。物件是分配在堆上的,堆上的記憶體由程式設計師手動釋放。

assign修飾基本資料型別或oc資料型別,因為基本資料型別是分配在棧上的,由系統分配和釋放,所以不會造成野指標。

ref 修飾值型別和修飾引用型別

ref 關鍵字傳遞棧位址 引用型別傳遞的堆的位址 引用型別的物件或例項儲存在堆上,而棧上儲存的是指向放物件的堆的位址 棧上放了個位址,這個位址是物件在堆上的存放位置 不加ref關鍵字時,我們傳遞的引用型別,其實是乙個指向堆的位址,method a a 即 棧裡面存的那個位址 當我們在方法裡面進行操作...

mysql修飾 mysql之資料型別和修飾屬性

資料型別的作用 1.指定值的型別 2.指定占用的空間 3.指定了是定長 fixed length 還是變長 variable length 4.mysql如何比較和排序值的型別 5.定義的型別是否能被建立索引 資料型別 字元char length 以字元格式存放,不區分大小寫,定長。最大255位元組...

const 型別修飾符

const是用來限定所指定的變數或者函式不可作修改。1 修飾變數 當const用來修飾變數的時候,const所指定部分不可修改。a.修飾常規變數 如 const int a 10 int const a 10 這兩種方式的效果一樣,都是將a描述為常量,a的值在被賦初值後不可以修改。但是這和由巨集定義...