property的幾個屬性區別

2021-07-06 06:28:14 字數 568 閱讀 5064

一、assign屬性

當資料型別為int、float等原生型別時,可以使用assign,否則可能導致記憶體洩露。例如當使用malloc分配了一塊記憶體,並把它的位址賦值給了指標a,後來如果希望指標b也共享這塊記憶體,於是講a賦值給(assgin)b。這時就用到了assgin,此時a和b指向同一塊記憶體。但是現在問題出現了,當a不再需要這塊記憶體時,能都直接釋放呢?肯定是不能的,因為a並不知道b是否還在使用這塊記憶體,如果a釋放了,那麼b在使用這塊記憶體的時候引起程式crash掉。

二、retain屬性

retain屬性就是為了解決上述問題而提出的,使用了引用計數(reference counting),還是上面那個例子,我們給那塊記憶體設乙個引用計數,當記憶體唄分配並且賦值給a時,引用計數是1.當把a賦值給b時引用計數增加到2.這時如果a不再使用這塊記憶體,它只需要把引用計數減1,表明自己不再擁有這塊記憶體。b不再使用這塊記憶體時也把引用計數減1.當引用計數變為0的時候,代表該記憶體不再被任何指標所引用,系統可以直接釋放掉。此時系統自動呼叫dealloc函式,記憶體被**。

三、copy屬性

copy是你不希望a和b共享一塊記憶體時會使用到。a和b各自有自己的記憶體。

property屬性的應用

演示property屬性的應用 class person object def init self,name 私有屬性 self.name name property defname self 返回私有屬性 return self.name name.setter defname self,valu...

property屬性引數

1.讀寫屬性 預設是readwrite,會生成getter和setter方法 如果是readonly表示只會生成getter方法 2.setter處理 預設是assign 賦值 因此基本資料型別不需要加這個引數。因為在setter方法裡,我們經常要將乙個物件賦值給類的成員屬性,這個時候根據記憶體管理...

Property 屬性動畫

單個屬性動畫 objectanimator offloat view,rotationx 0,180 setduration 3000 start 多個屬性動畫 多個屬性動畫組合 設定乙個中心點 view.setpivotx 0.5f view.setpivoty 0.5f 方式一 建立多個屬性動畫...