自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS應(yīng)用開發(fā):ARC之@property使用

移動開發(fā) iOS
在《iOS應(yīng)用開發(fā):什么是ARC?》中,我們學(xué)到了一些ARC的基本概念,這一次我們來看看ARC對@property的使用規(guī)則有何影響。

所有者屬性

我們先來看看與所有權(quán)有關(guān)系的屬性,關(guān)鍵字間的對應(yīng)關(guān)系。

屬性值 關(guān)鍵字 所有權(quán)
strong __strong
weak __weak
unsafe_unretained __unsafe_unretained
copy __strong
assign __unsafe_unretained
retain __strong

strong

該屬性值對應(yīng) __strong 關(guān)鍵字,即該屬性所聲明的變量將成為對象的持有者。

weak

該屬性對應(yīng) __weak 關(guān)鍵字,與 __weak 定義的變量一致,該屬性所聲明的變量將沒有對象的所有權(quán),并且當對象被破棄之后,對象將被自動賦值nil。

并且,delegate 和 Outlet 應(yīng)該用 weak 屬性來聲明。同時,如上一回介紹的 iOS 5 之前的版本是沒有 __weak 關(guān)鍵字的,所以 weak 屬性是不能使用的。這種情況我們使用 unsafe_unretained。

unsafe_unretained

等效于__unsafe_unretaind關(guān)鍵字聲明的變量;像上面說明的,iOS 5之前的系統(tǒng)用該屬性代替 weak 來使用。

copy

與 strong 的區(qū)別是聲明變量是拷貝對象的持有者。

assign

一般Scalar Varible用該屬性聲明,比如,int, BOOL。

retain

該屬性與 strong 一致;只是可讀性更強一些。

讀寫相關(guān)的屬性 (readwrite, readonly)

讀寫相關(guān)的屬性有 readwrite 和 readonly 兩種,如果使用ARC之后,我么需要注意一下 readonly 屬性的使用。

比如下面的變量聲明。

  1. @property (nonatomic, readonly) NSString *name;  

一般聲明為 readonly 的變量按理說應(yīng)該不需要持有所有權(quán)了,但是在ARC有效的情況下,將出現(xiàn)下面的錯誤信息 :

 “ARC forbids synthesizing a property of an Objective-C object with unspecified ownership or storage attribute
如果定義了ARC有效,那么必須要有所有者屬性的定義;所以我們的代碼改成這樣,就OK了

  1. @property (nonatomic, strong, readonly) NSString *name; 

不過有一點,Scalar Varible的變量缺省都有 assign 的屬性定義,所以不需要給他們單獨的明示聲明了。

責(zé)任編輯:佚名 來源: 易飛揚博客
相關(guān)推薦

2012-01-18 10:57:37

ARCiOS

2013-04-16 15:49:31

iOS開發(fā)是否用ARC

2011-08-11 16:50:04

iOSTwitter

2011-08-08 13:26:48

iOS開發(fā) Twitter

2014-06-13 11:06:36

RoboVMiOS應(yīng)用

2013-12-17 11:04:10

iOS開發(fā)傳感器

2013-12-17 15:32:20

iOS開發(fā)NewsstandKi

2014-08-04 17:46:15

NavBarTarBar

2011-08-09 11:36:41

iPhoneUIPickerVieDEMO

2011-07-28 15:11:23

iOS Objective-

2014-07-21 14:49:35

iOSUILabel

2014-07-23 13:17:53

iOSUITextField

2011-07-18 10:21:04

iOS Visual Stu iphone

2011-05-11 10:02:37

iOS

2012-02-13 14:22:22

MonoTouchiOS應(yīng)用Visual Stud

2017-02-15 09:25:36

iOS開發(fā)MQTT

2011-08-02 11:07:42

iOS開發(fā) UIWebView

2012-05-21 21:34:51

iOS

2013-09-13 13:16:05

2011-07-08 14:58:16

iPhone Xcode iOS
點贊
收藏

51CTO技術(shù)棧公眾號