加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 在Xcode 4和iOS 4中定义成员和属性

发布时间:2020-12-14 17:48:38 所属栏目:百科 来源:网络整理
导读:我正在开发一个相当雄心勃勃的第一个iPhone项目,我很困惑,实现和访问属性的方式和原因. 例1: (在.h) Nsstring *_sale;@property (nonatomic,retain) NSString *sale; (在他们中) @synthesize sale = _sale; 例2: (在.h) @property (nonatomic,retain) NSSt
我正在开发一个相当雄心勃勃的第一个iPhone项目,我很困惑,实现和访问属性的方式和原因.

例1:
(在.h)

Nsstring *_sale;
@property (nonatomic,retain) NSString *sale;

(在他们中)

@synthesize sale = _sale;

例2:
(在.h)

@property (nonatomic,retain) NSString *sale;

(在他们中)

@synthesize sale;

这两个似乎对我没有任何麻烦,但我想弄清楚为什么有两种方法可以做到这一点,以及可能有什么好处.

有人可以告诉我区别吗?

解决方法

示例1演示了定义ivar / property变量对的旧方法.新编译器现在为您生成ivars(NSstring * _sale;部分).示例1还演示了使用@synthesize sale = _sale手动将属性销售配对到ivar _sale;声明.

示例2是一种在Obj-C中实现属性的更简洁的方法,也是您在互联网上看到大多数示例代码的方式.绝大多数情况下,您可以编写属性而无需覆盖编译器为您生成的访问器/更改器方法.

为清晰起见,有一些下划线前缀的顽固支持者表示实例变量.您可能会发现这对内存管理有所帮助,如示例1所示,设置self.sale等于自动释放的NSString会很好,因为它会被保留,但设置_sale等于自动释放的对象会导致不稳定的行为之后因为传入的NSString不会被实例变量保留.

一般来说,我更喜欢编写我的属性,如例2中所示.

简答:有两种方法可以做到这一点,因为新的编译器现在可以为你推断出一些东西,但之前的做法是为了向后兼容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读