引用和指針

引用:在oc中引用分爲弱引用和強引用,

  •   弱引用:弱引用是沒有對象的絕對使用權,也沒有使對象的計數器進行加1操作,在引用的對象被釋放的時候,它是無能爲力的,
  •  弱引用關鍵字__weak 在對象被釋放的時候 會自動的把指針置爲nil,保證了程序的優良性;__unsafe_unretained:在對象釋放的時候,不會把只想對象的弱引用指針置爲nil,從而使得指針成爲野指針,若再次調用該指針,會使程序發生莫名其妙的變化從而是程序崩潰,故不建議使用;
  • 強引用:強引用擁有對象的絕對使用權,使得對象的指針計數器加1,通常情況下在強引用指針沒有對對象進行釋放的時候,指針對象是不會被程序銷燬的。
  • 強引用的關鍵字:__strong 用來修飾變量,strong等同retain

指針:內存中的一個變量,其內部存儲的是一個變量或對象的地址,同時指針也不關心它所指向的地址的內容如何變化。


指針和引用的區別:

1.從現象上看:指針在運行時可以改變其所指向的值,而引用一旦和對象綁定後就不再改變,引用訪問是直接訪問,而指針是間接訪問。

2.從內存上看:程序爲指針變量分配空間,而引用不分配

3.在遍以上:在程序編譯過程中,都要被添加到符號表上,指針變量在符號表上記錄的是指針變量的地址值,而醫用記錄的是引用的對象的地址值。符號表一旦生成就不會改變。所以指針可以改變指向的對象(指針變量的值可以改變)而引用不行

發佈了15 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章