Re: [問題] 有關object-c中的@property
※ 引述《Gsus (肉元,吉米,助教)》之銘言:
: 我想請問
: @interface myObject:NSObject {
: NSString *name;
: }
: @property(readonly) NSString *name;
: ------------------------------------
: @implementation
: -(NSString*)name {
: return ......
: }
: @end
: 究竟@property(readonly)是針對interface中name這個變數
: 還是implementation中name這個method?
@property 只是讓你少寫一些字的捷徑
請把它直接想成下面這行:
- (NSString *)name;
readonly 代表, 呃, read-only, 所以就是一個 getter 沒有 setter
如果你的 @property 後面沒有加 readonly (或有加 readwrite)
那就是兩行
- (NSString *)name;
- (void)setName:(NSString *)aName;
所以你在 .m 裡面照樣實作就對了
: 另外如果我將上述例子改寫為
: @interface myObject:NSObject {
: NSString *name;
: }
: @property(readonly) NSString *getName;
: ------------------------------------
: @implementation
: @synthesize getName;
: @end
: 會發生什麼事情?
============ IMPORTANT NOTE STARTS HERE ============
We use name only in Cocoa, not getName
================ END IMPORTANT NOTE ================
不過回到你的問題, 事實上是不會有什麼事情發生
因為 @synthesize 仍然是一個讓你少打幾個字的工具而已
它會合成一組「標準」的 setter-getter
當然如果你有給 readonly 參數那 @synthesize 就只會生出 getter 不會生 setter
說真的, 我很想知道你是不是自學的...
如果不是, 那要馬你書沒看清楚就跑上來問, 要馬你看到一本爛書 -.-
因為書裡面應該要把這些東西解釋清楚才對
還是要重申一下我覺得初學者不應該使用 @property @synthesize 的立場
尤其對於沒有用 garbage collector 的人XD
--
「我最想要的同伴嘛,首先是要笑口常開,其次是我們能永遠不會發生誤會。
如果這些都能辦到的話,嗯,如果他是世界上第一流的橋手,也還不錯。」
-- 班尼多‧加羅素,前義大利藍隊成員
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章