打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iOS里面property与 实例变量有什么区别
0

昨天晚上看了一下苹果官方文档,里面提到Objectiv-C的Property概念。说只要按照他们的方式声明,就可以用点语法来访问对象的属性。听他们的描述好像实际运行的时候是会还原成setPropertyName/getPropertyName这样的方法来实现存取器。不知道真实情况是否是这样?如果是这样的话那Property存在的意义是什么?为何不直接声明为public的成员变量....



@property是给编辑器看的。就算你不声明@property,在obj的@implenmention下写好valueA和setValueA,还是可以obj.valueA赋值或取值,但是没有自动联想。

只声明@property而不去实现,在Xcode4.4以后会自动帮你生成get和set方法,这是另外一码事。

和public的成员变量有何区别:property可以自己实现存取方法。

0
fing 3 2012年11月24日 回答

@property 可以更好的管理内存
而且可以享受简便的访问

0
Alex_138072 1 2012年11月26日 回答

Property存在的意义就是在你赋值或取值的时候能够做一些其他的事情,例如取了之后自增1,又或者设置之后需要更新其他的成员变量。

0
hikui 302 2012年11月27日 回答

@property(xxxx)就是自动根据规则生成getter和setter。Objc的setter要比java什么的复杂,涉及retain,release之类的。当然你也可以完全自己实现。
访问成员变量的->用法已经deprecate了。



你可以认为{}内部的是私有变量,出了这个文件本身,其他都不能饮用,而property的你只要得到这个对象,就能饮用这个对象的属性


@public  定义的变量。。。

有点混乱,这种语法可以,但是写接口的话。。我反正从来不用。。你在h文件里见过几个用public定义的变量
写接口文件还是大众化一些比较好,
对于写接口的人 便于查找错误(不用接口<函数/property>,你如果想查找谁在哪里 设置了 这个个变量的值,估计很痛苦的),而且不会有隐患。
对于调用接口的人也很方便理解。 




如果所有变量都定义为实例变量,或者全部定义为Property变量,虽然运行结果都一样。

我的理解是,供外部类调用时,定义为property,如果是内部使用的话,两个都可以。

但是对内存,效率等有什么区别呢?


方式1:
@interface MapLocationInfo : UIViewController
{
    NSString *A;
    NSString *B;
    NSString *C;
     .........
}


方式2:


@interface MapLocationInfo : UIViewController
 
@property (nonatomic, retain) NSString *A;
@property (nonatomic, retain) NSString *B;
@property (nonatomic, retain) NSString *C;
...............
@end
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
object
iOS求职之OC面试题
《招聘一个靠谱的iOS》面试题参考答案(上)
Objective-C入门教程03:属性(@property和@synthesize)
Objective-c的@property 详解
iOS经典面试题总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服