A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

@property   1.是使用在@interface 里面的,当用@property 申明一个属性的时候会做三件事情,一是生成一个私有的属性,这个属性可以在方法的内部访问,但不可以被方法的外部直接访问,可以通过点语法\或者setter  getter 方法来访问    二是生成getter  和setter 方法的申明   三 是生成getter和setter方法的实现,..生成这个属性不是真正的私有属性,它可以被外界间接访问.如果想要只生成真正的私有属性,可以用延展这种方法,将这个属性申明到 这种特殊的分类(延展)里,再将这个属性的getter 和setter方法的实现写在@implementation里面.这样就生成了一个真正私有的属性.因为@property不可以写在@implementation里面,而延展又只是申明,可以申明任何成员的属性方法,实现则正好在@implementation中,躲过了在@interface中的申明,所以这种方法可以申明一个真正的私有属性.

@property 是将普通的 定义属性与封装getter 和setter的操作集成在一起的一个语法.它的局限性就是不可以用@property来生成一个真正的私有属性.只能通过上面那种方法,或者是用原始的方法(单独申明一个属性,只将属性的getter 和setter方法的实现写在@inplementation中.

2 个回复

倒序浏览
杨光0618 来自手机 中级黑马 2016-8-27 12:15:26
沙发
不错不错,学习学习
回复 使用道具 举报
很详细,感谢楼主分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马