亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Objective-c中的“實例變量”和“屬性”之間有區別嗎?

Objective-c中的“實例變量”和“屬性”之間有區別嗎?

iOS
海綿寶寶撒 2019-11-15 15:10:16
Objective-c中的“實例變量”和“屬性”之間有區別嗎?Objective-c中的“實例變量”和“屬性”之間有區別嗎?我對此不太確定。我認為“屬性”是一個具有存取方法的實例變量,但我可能認為錯了。
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

財產是一個更抽象的概念。實例變量實際上只是一個存儲槽,就像結構中的槽。通常,其他對象永遠不應該直接訪問它們。另一方面,屬性是您可以訪問的對象的屬性(聽起來很模糊,應該是這樣)。通常,屬性將返回或設置實例變量,但它可以使用多個數據或根本不使用數據。例如:

@interface Person : NSObject {
    NSString *name;}


查看完整回答
反對 回復 2019-11-16
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

屬性是一種為某些值實現getter / setter的友好方式,具有其他有用的功能和語法。屬性可以由實例變量支持,但是您也可以定義getter / setter以執行更動態的操作,例如,您可以在字符串上定義lowerCase屬性,該屬性動態創建結果而不是返回某個成員的值變量。

這是一個例子:

// === In your .h ===@interface MyObject {
    NSString *propertyName;}// ...@property (nonatomic, retain) NSString *propertyName;// === In your .m @implementation ===@synthesize propertyName /* = otherVarName */;

@property行定義了一個名為propertyNametype 的屬性NSString *??梢允褂靡韵抡Z法獲取/設置:

myObject.propertyName = @"Hello World!";NSLog("Value: %@", myObject.propertyName);

當您分配或讀取時,myObject.propertyName實際上是在對象上調用setter / getter方法。

@synthesize行告訴編譯器為您生成這些getter / setter,使用具有相同屬性名稱的成員變量來存儲值(或者otherVarName如果您在注釋中使用語法)。

隨著@synthesize你仍然可以定義自己的重載的getter / setter方法之一。這些方法的命名約定是setPropertyName:針對getter的setter和propertyName(或getPropertyName非標準)。另一個仍將為您生成。

在您的@property行中,您可以在屬性的parens中定義許多屬性,這些屬性可以自動執行線程安全和內存管理等操作。默認情況下,屬性是原子的,這意味著編譯器將@synthesiz使用適當的鎖包裝ed get / set調用以防止并發問題。您可以指定nonatomic要禁用此屬性的屬性(例如,在要將大多數屬性設置為默認的iPhone上nonatomic)。

有3個屬性值可以控制任何@synthesizedsetter的內存管理。第一個是retain自動發送release到屬性的舊值和retain新值。這非常有用。

第二個是copy復制傳入的任何值,而不是保留它們。最好使用copyNSString,因為調用者可以傳入NSMutableString并將其從您下面更改。copy將創建只有您有權訪問的輸入的新副本。

第三種是assign直接指針分配而不調用舊對象或新對象上的保留/釋放。

最后,您還可以使用該readonly屬性禁用該屬性的setter。



查看完整回答
反對 回復 2019-11-16
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

我使用接口部分的屬性 - 對象與其他對象和實例變量的接口是你在課堂上需要的東西 - 除了你應該看到并操縱那些東西。


查看完整回答
反對 回復 2019-11-16
  • 3 回答
  • 0 關注
  • 554 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號