Re: [問題] 關於 getter method

看板MacDev作者 (←這人是超級笨蛋)時間15年前 (2010/07/03 17:44), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《Senkousha ( )》之銘言: : hmm, 想請問一下, : 假設我在 interface 裡宣告一個 id 變數要 export 出去, : 但因為內部是用 NSMutableArray 實作的, : 不能讓外部的呼叫者拿到,因此用 getter 包了一層 copy… : 那我自己在內部有辦法產生另外一個(真的) getter, : 不是拿 copy 出的 id,而是直接拿到真正的 NSMutableArray pointer 嗎? : ---- : 雖然說在 init 裡面 alloc 好之後就可以直接存取, : 但是心裡總覺得毛毛的(?)想要用 [self iVarName]… 不需要毛毛的, 你就直接用吧... 不過你想要的東西不是辦不到, 可以這樣寫 (in header) @interface Foo : NSObject { NSMutableArray *mutableArray; } @property(copy, readonly) NSArray *array; @end (in implementation) @interface Foo () @property(retain) NSMutableArray *mutableArray; @end @synthesize array = mutableArray, mutableArray; 參見 http://tinyurl.com/2v4eewr (蘋果官網的教學) 把 mutableArray 這個 property 放到 .m 可以達到 private method 的效果 不過成員變數 private, getter 直接回傳, 這兩者根本是 Objective-C 的預設特性 所以我還是覺得不如直接存取變數本身... -- ╱ ̄ ̄ ̄╲ ▏◢█◣ 成龍表示: 是喔... ′/ ‵ ╰╯ ψQSWEET █◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146 ※ 編輯: uranusjr 來自: 114.32.81.146 (07/03 17:47)

07/03 17:51, , 1F
這方法跟以前在.m裡面偷定義interface是一樣的吧 :p
07/03 17:51, 1F

07/03 17:52, , 2F
不過這也只是在沒有.m的人寫code的時候不會被xcode列出
07/03 17:52, 2F

07/03 17:52, , 3F
來,但是真要傳這個method過去這物件還是會乖乖做事 XD
07/03 17:52, 3F

07/03 19:31, , 4F
沒有更好方法了啊XD
07/03 19:31, 4F

07/03 20:31, , 5F
如果.h是宣告 @property (retain, readonly) NSArray *array
07/03 20:31, 5F

07/03 20:31, , 6F
可以在.m裡的category裡,用
07/03 20:31, 6F

07/03 20:31, , 7F
@property (retain, readwrite) NSArray *array;
07/03 20:31, 7F

07/03 20:32, , 8F
overwrite掉.h所宣告的屬性~~
07/03 20:32, 8F
文章代碼(AID): #1CBmQ5LC (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1CBmQ5LC (MacDev)