作者steny138 (阿辰)
看板MacDev
标题[问题] Property的关系
时间Sat Jun 15 16:55:28 2013
根据现在的说法
在.h宣告了
@property NSString *value;
等同於
@property NSString *value;
@Synthesis value=_value;
那这样说的话
在使用该property时候
怎麽只能使用 self.value=@"";
而找不到 value=@""; //不能通过编译
但是在使用 _value=@""; //也不会报错
请问到底是怎麽回事???
有一些解释我看不太懂
没有点到我想的问题
我以为自动加入synthesis
表示 产生一个 value 指向property产生的变数 _value
却没有办法使用 value=@"";
而必须使用 self.value or [self value]
是因为这个 value 现在是 method 名称 所以才要这样写吗
更怪的是 若我又写了
@property NSString *value;
@Synthesis value;
我就可以直接写
value=@""; //通过编译
请问到底是怎麽回事 我觉得我被搞混了
反而大家讲得我都看不懂了...
现在用的是 xcode 4.5的版本
请指教 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.230.90
1F:→ uranusjr:你搞错 synthesize 的意思了 06/15 17:10
2F:→ yuanruo:不写或是@synthesize value = _value 时你用self.value 06/15 18:11
3F:→ yuanruo:他会调用setter方法 根据property里设置的retain,copy,ass 06/15 18:12
4F:→ yuanruo:去赋值 用_value = @"" 是直接赋值给Value 不通过setter 06/15 18:13
5F:→ yuanruo:当你写成@synthesize value时则原本的_value或被vlaue取代 06/15 18:14
6F:→ yuanruo:你就只能用self.value(通过setter)或是value= (直接赋值) 06/15 18:15
7F:→ yuanruo:当写成@sy value getter是返回 value 不写则是返回_value 06/15 18:20