看板 MacDev 關於我們 聯絡資訊
※ 引述《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)
Blueshiva:這方法跟以前在.m裡面偷定義interface是一樣的吧 :p 07/03 17:51
Blueshiva:不過這也只是在沒有.m的人寫code的時候不會被xcode列出 07/03 17:52
Blueshiva:來,但是真要傳這個method過去這物件還是會乖乖做事 XD 07/03 17:52
uranusjr:沒有更好方法了啊XD 07/03 19:31
aecho:如果.h是宣告 @property (retain, readonly) NSArray *array 07/03 20:31
aecho:可以在.m裡的category裡,用 07/03 20:31
aecho:@property (retain, readwrite) NSArray *array; 07/03 20:31
aecho:overwrite掉.h所宣告的屬性~~ 07/03 20:32