分享

iOS里面property与 实例变量有什么区别

 没原创_去搜索 2015-10-26
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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多