Mem*_*hiZ 5 properties objective-c ios xcode4 synthesize
我来自C#开发,刚刚开始学习Objective-C和Xcode 4.据我所知,"@synthesize"正在替换属性的getter/setter方法,如果你不需要检查/控制值被读或写.
但为什么Xcode 4会自动为我创建一个实例变量?
这还不够:
@synthesize myProperty;
Run Code Online (Sandbox Code Playgroud)
代替:
@synthesize myProperty = _myProperty;
Run Code Online (Sandbox Code Playgroud)
?
如果我没有/需要任何getter或setter,为什么我要使用/拥有实例变量而不是实际属性?
提前致谢!
MemphiZ
编辑:
我知道@synthesize正在取代getter/setter,但这部分有什么用= _myProperty;呢:?如果我可以直接使用"myProperty",为什么我想要一个实例变量?如果setter例如检查值的条件,我会理解使用"_myProperty".如果我想跳过此检查,我会使用_myProperty.但是当我使用@synthesize时,我没有一个可以进行检查的setter.那么我为什么要/想要一个实例变量呢?
回答:
请参阅MattyG帖子中的评论!
Mat*_*tyG 14
这是一个用于提醒程序员通过setter和getters访问实例变量的约定.所以,如果你正在使用:
@synthesize myProperty = _myProperty;
Run Code Online (Sandbox Code Playgroud)
然后直接访问变量,你必须写:
_myProperty = something;
Run Code Online (Sandbox Code Playgroud)
要通过它的setter访问变量,你必须写:
self.myProperty = something;
Run Code Online (Sandbox Code Playgroud)
好处是,如果你忘记通过自我访问.那么编译器会警告你:
myProperty = something; //this won't compile
Run Code Online (Sandbox Code Playgroud)
也见这个问题.
| 归档时间: |
|
| 查看次数: |
2852 次 |
| 最近记录: |