作者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