作者uranusjr (←这人是超级笨蛋)
看板MacDev
标题Re: [问题] 有关object-c中的@property
时间Wed Dec 16 01:54:39 2009
※ 引述《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