@property (nonatomic, strong) nsstring ****array;
在ios程式中我們常常會看到上述的字樣那麼這究竟是什麼意思呢?這也就是我們所說的屬性。 屬性
readewrite:指明屬性是read/write 預設屬性是readwrite。在沒有arc以前需要@sythesize指令。這樣getter,setter方法才會被生成。在arc以後我們不需要去使用@sythesize編譯器會自動我們生成getter,setter方法。在下文會詳細說明。
readonly:指明屬性是唯讀的。只有getter方法被生成。假如使用self.xx來給唯讀屬性賦值。那麼編譯器將會報錯。
以上的屬性屬於可寫性,是否與乙個setter方法關聯。
assign: 不複製不保留,直接賦值。
retain: 保留了賦值時傳遞的物件。在進行新的賦值之前釋放了以前的值。
copy:傳送一條複製的訊息給被傳遞的物件保留它,並釋放任何以前的值。
以上的三個屬性屬於setter語法
nonatomic:非原子性,不加同步,在多執行緒中會提高效能。
以上時原子性。
詳細用法
@property (引數1, 引數2) 型別 變數名
引數1與引數2就是上面所提到的屬性:可寫性,setter方法,原子性。
可寫性跟原子性沒有什麼要說的我們主要來看看setter方法中copy跟rentain。
retain的setter方法
-(void) ste*** :(class*** *) obj
}
copy的setter方法-(void) set***: (class*** *) obj
}
retain: 保留了賦值時傳遞的物件。在進行新的賦值之前釋放了以前的值。
copy:傳送一條複製的訊息給被傳遞的物件保留它,並釋放任何以前的值。
那這倆句話究竟是什麼意思?看一段**
mytestobject * temp = [[mytestobject alloic] init];
self.obj = temp;//retaincount = 2
[temp release]; //reataincount = 1;
_obj = [[mytestobject alloc] init]; //retaincount = 1
為什麼會出現這種情況,實際上self.obj 條用的是setter方法來實現賦值的,而setter的屬性正是retain。而_obj只是指標簡單的賦值沒有呼叫setter方法。簡單的來說就是說retain我們可以理解為是指標的拷貝。retain是建立乙個新指標,引用計數加一。它與原物件的位址相同的當然內容也是相同的。也就是c++中的深拷貝。
既然存在了深拷貝,那麼當然也存在淺拷貝。而copy也就是我們所說的淺拷貝,也就是內容的拷貝。copy是建立乙個新物件,與原物件內容相同,與引用計數無關。舊的物件也沒有變化。
如果沒有理解上述的說法那麼我們就記住:
當用基本資料型別的時候例如:int,double等 我們就把屬性設定為assign
當用nsstring時把屬性設定為copy
剩下的我們就把屬性設定為strong(strong可以理解為retain的加強版)
屬性的好處
屬性宣告為訪問器方法提供了清晰,現實的配置。(訪問器也就是getter,setter方法個人理解)
編譯器可以按照你在宣告中的配置為你合成訪問器方法。
屬性語法標示符,加上作用於限制,因此,編譯器可以檢測到未宣告的屬性的使用
@synthesize mytestobject;
在沒有arc以前我們常常會看到**中有上述的字樣那麼這究竟是幹什麼的?
@inte***ce mytestobject : nsobjecrt
@property (nonatomic, assign) int ntest;
@end
@implrmentation mytestobject
@synthesize ntest;
@end
這段**的意思就是要讓ntest可以使用舊必須要用@synthesize提供乙個跟屬性名字相的及型別相同的例項變數來使用它。
但是rac出現以後我們大可以不比這麼麻煩。我們只需要這樣
@inte***ce mytestobject :nsobject
@property (nonatomic, assign) int ntest;
@end
編譯器會自動生成getter,setter方法而arc的誕生,不僅省去了我門呼叫@synthesize例項化,而且還省去了人工release提高了記憶體管理的效率。 iOS應用開發 什麼是ARC?
arc是什麼 arc基本規則 總結 新年伊始,永珍更新。新一年開始,我們來更加深入了解一下iphone開發的內部。作為開始,我們先來了解一下arc。arc是什麼 arc是ios 5推出的新功能,全稱叫 arc automatic reference counting 簡單地說,就是 中自動加入了re...
iOS應用開發 什麼是ARC?
arc是什麼 arc是ios 5推出的新功能,全稱叫 arc automatic reference counting 簡單地說,就是 中自動加入了retain release,原先需要手動新增的用來處理記憶體管理的引用計數的 可以自動地由編譯器完成了。該機能在 ios 5 mac os x 10....
iOS應用開發 ARC
arc是什麼 arc是ios 5推出的新功能,全稱叫 arc automatic reference counting 簡單地說,就是 中自動加入了retain release,原先需要手動新增的用來處理記憶體管理的引用計數的 可以自動地由編譯器完成了。該機能在 ios 5 mac os x 10....