Re: [問題] 有關object-c中的@property

看板MacDev作者 (←這人是超級笨蛋)時間15年前 (2009/12/16 01:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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
文章代碼(AID): #1B9yrYtk (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1B9yrYtk (MacDev)