簡體   English   中英

iPhone-有關@property的問題

[英]iPhone - a question about @property

我是Objective-C的新手,我在看一段代碼,試圖理解一些東西,然后遇到了這個.h文件:

@interface部分上有這樣的聲明

MyVideoClass *contrast_;

然后在下面

@property (nonatomic, retain) MyVideoClass *contrast;
@property (nonatomic, retain) FetchClass *fetchMe;

奇怪的是,第一個在名稱后有一個下划線,而第二個則沒有。

另一個奇怪的事情是,該人調用了這些屬性,如下所示:

FetchClass *fetchOne = [self.fetchMe contrast];

那叫什么電話 對我來說這似乎很瘋狂。 我根本不明白這里發生了什么,但是代碼有效。 太瘋狂了。

你們能給我解釋一下嗎? 原諒這個愚蠢的問題,但我仍在學習...

謝謝

檢查執行文件的頂部; 您應該看到一行顯示

@synthesize contrast = contrast_;

這樣做的原因是要確保您通過屬性的設置器和獲取器(使用@synthesize創建)而不是直接訪問屬性。

在第二段代碼中, self.fetchMe使用其設置程序fetchMe_屬性。 如果這個家伙忘了使用self. 並簡單地寫

FetchClass *fetchOne = [fetchMe contrast];

他會得到一個錯誤,因為fetchMe不存在(但fetchMe_確實存在)。 與所有事物一樣,是否使用保護取決於您。

這個:

FetchClass *fetchOne = [self.fetchMe contrast];

完全等同於以下任何一個:

FetchClass *fetchOne = self.fetchMe.contrast;
FetchClass *fetchOne = [[self fetchMe] contrast];

也就是說, . 等效於方法調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM