作者uranusjr (←這人是超級笨蛋)
看板MacDev
標題Re: [問題] 關於 getter method
時間Sat Jul 3 17:44:33 2010
※ 引述《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)
1F:推 Blueshiva:這方法跟以前在.m裡面偷定義interface是一樣的吧 :p 07/03 17:51
2F:→ Blueshiva:不過這也只是在沒有.m的人寫code的時候不會被xcode列出 07/03 17:52
3F:→ Blueshiva:來,但是真要傳這個method過去這物件還是會乖乖做事 XD 07/03 17:52
4F:→ uranusjr:沒有更好方法了啊XD 07/03 19:31
5F:推 aecho:如果.h是宣告 @property (retain, readonly) NSArray *array 07/03 20:31
6F:→ aecho:可以在.m裡的category裡,用 07/03 20:31
7F:→ aecho:@property (retain, readwrite) NSArray *array; 07/03 20:31
8F:→ aecho:overwrite掉.h所宣告的屬性~~ 07/03 20:32