[英]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.