2010-05-24 49 views
0

我正在尋找getter/setter的語法。哪一個是setter,哪個是getter?@property objective -c語法

getwrite屬性是getter嗎?
分配setter?

 
@interface SomeClass : NSObject 
{ 
    NSString *str; 
    NSDate *date; 
} 

@property (readwrite, assign) NSString *str; 
@property (readwrite, assign) NSDate *date; 

回答

6

既不是吸氣劑也不是吸氣劑。 readwrite控制是生成一個set方法還是隻是一個getter,並且assign指定了內存管理方案(在這種情況下,變量不被保留,這可能是一個錯誤)。

有關完整的屬性聲明語法,可以看看the relevant docs

+0

該文檔非常好,雖然我沒有找到我是否可以交換如下屬性: @property(copy,readwrite)NSString * value; @property(readwrite,copy)NSString * value; – okami 2010-05-24 19:02:41

+0

@okami:你可以交換訂單,但是有一個他們通常寫入的訂單,與此不同的是,對於其他人掃描你的代碼可能不太有用。 – corprew 2010-05-24 19:37:56

+0

鏈接斷開。 :( – devios1 2013-03-13 23:51:23

2

你應該檢查出this page,它會解釋的東西。

讀寫=該屬性可以被讀取和寫入

分配=這是不需要被計數REF屬性。 (另一種選擇是「保留」,這意味着該屬性的值是retain編集時和release d重寫時

+0

鏈接被破壞,「頁面」不是一個很好的錨點,不幸的是。 – 2015-08-04 21:09:39

2

無論您發佈的代碼是一個接口聲明; getter和setter在@implementation上下文去,與通常使用的@synthesize指令創建,如

@synthesize str; 
@synthesize date; 

有許多可以在屬性聲明後去屬性。在這種情況下,readwrite指定(使用該屬性的值可以設置someObject.str = @"foo"語法);相反的是readonly,這意味着值的財產不能設置。 assign - 與copyretain相反 - 表示屬性值直接設置,而後兩者分別創建值的一個副本並保留該值。

2

當您使用@property時,getter和setter是兩種自動創建的方法。默認情況下,getter的名稱與屬性相同,setter的名稱前綴爲set,後綴爲:;例如,對於物業str,您可以撥打[someobj str]以獲取str財產和[someobj setStr: somestr]

readwriteassign屬性提供瞭如何getter和setter應該定義的一些信息,如果使用@synthesize創建定義爲您服務。 readwrite只是說你可以設置財產,assign說明財產將如何設置。有關更多信息,請參閱the documentation