屬性和關聯物件整理

2022-08-03 23:33:20 字數 970 閱讀 5356

1、oc常用屬性彙總

atomic:生成的setter、getter操作為原子操作,為系統預設,消耗大量資源,執行效能低,但是是執行緒安全的。

assign:用來修飾值型別,這裡的值型別我們可以理解為基礎資料型別(nsinteger)和c語言型別資料(int,float,double,char,bool)。不會更改引用計數。

retain:釋放舊物件,並使傳入的新物件引用計數+1。只能用於nsobject及其子類。

weak:弱引用,只是引用屬性的指標,而不持有屬性,屬性的引用計數不會+1。和assign類似,但是不同的是,當指向的物件被釋放後,weak會被自動置空,而assign不會置空,所以會導致野指標出現,所以,在宣告delegate的時候使用weak,當使用assign修飾的時候,需要手動給delegate置空。

copy:複製,cpoy只能修飾遵守nscoping協議的類,copy的作用是在記憶體上開闢出一片新的空間,然後將呼叫者複製進去,這樣對於呼叫者而言,引用計數是不變的。但是對於一些不可變型別,如:nsstring、nsarray、nsdictionary、nsset之類,copy並不會在記憶體上開闢新的空間,而是為呼叫者的引用計數+1,這裡等同於retain。

readwrite: 物件是可讀可寫,系統自動生成屬性的setter和getter方法,及下劃線開頭的成員變數。

readonly:物件是唯讀屬性,系統自動生成乙個getter方法,及下劃線開頭的成員變數。

retain是指標的複製,copy是內容的複製

用strong修飾oc物件以及nsstring和block , 沒新增到父控制項上的控制項

用weak修飾已經被新增到父控制項上的控制項 以及 **物件

用assign基本資料型別、列舉、結構體(非oc物件) class型別

用copy修飾一種情況下的nsstring-->不確定賦值過程中用的是可變還是不可變字串

整理關於物件屬性知識

訪問物件的屬性兩種方式 person.name或person name 什麼時候報屬性訪問值錯誤呢?查詢乙個不存在的屬性不會報錯,在物件自帶屬性 繼承屬性中均未找到查的屬性,返回undefined。但是當物件不存在時,要查不存在的物件的屬性就會報錯,null和undefined是沒有屬性的,要查他們...

js中物件屬性的整理

都知道js是物件導向的,建立了物件後,物件中儲存的就是一組組名值對,值可以是資料型別或函式。不管函式還是資料,都可以稱為某某物件的屬性。再細分,屬性可以有兩個型別 資料屬性或訪問器屬性。因此,資料屬性不要誤解為是資料的屬性型別,函式的屬性型別也是資料屬性的。var obj age 11 consol...

類屬性和物件屬性

實現記錄建立物件個數的功能 class tool object def init self,new name self.name new name 底下這個方法太笨啦 num 0 tool1 tool 鐵鍬 num 1 print num tool2 tool 工兵鏟 num 1 print num...