黑马程序员技术交流社区

标题: @property [打印本页]

作者: 似神仙    时间: 2015-12-3 20:29
标题: @property
很强大的一个东西


自动生成 对象属性,   自动生成属性的 set  get方法的声明与实现.




本质是:            1.检测有没有一个NSString *_name;如果没有自动创建
             2.检测有没有_设计get与set声明,如果没有,按标准形式设置


需要注意:  自动生成的属性 是@private
                 如果需要别的权限,自己应以手动设置属性
                 如果手动创建了一个标准格式的set get ,不会自动创建该步骤
                 如果把实现里的get set全手打出来, @property不会起作用


作者: 沐小妖mavs    时间: 2015-12-3 22:30
总结的不错!
作者: Tmac90301    时间: 2015-12-3 22:32
生成实例变量的属性不是private,子类可以继承,但是对子类不可见,只能通过父类的封装方法来访问
作者: 吃饱就睡    时间: 2015-12-4 00:59
Tmac90301 发表于 2015-12-3 22:32
生成实例变量的属性不是private,子类可以继承,但是对子类不可见,只能通过父类的封装方法来访问 ...

那个好像不属于继承吧?上课时候老师提到的property生成的变量属于私有变量 没法继承的  只要子类智能提示不显示的不就是不继承吗? 只能通过父类的点语法调用get和set方法来访问property生成的变量
作者: Flowerkanzhe    时间: 2015-12-4 12:38
自动生成不是private的,而是protect
作者: Tmac90301    时间: 2015-12-4 23:00
吃饱就睡 发表于 2015-12-4 00:59
那个好像不属于继承吧?上课时候老师提到的property生成的变量属于私有变量 没法继承的  只要子类智能提 ...

嗯,按照语法规定来说,确实是不属于继承的。但是虽说是父类的东西,子类看不见,但是子类确实是用有的。父类所有的东西都只是相对私有,只要父类可以访问到,子类其实也有办法访问到
作者: 罗文强    时间: 2015-12-5 00:09
这个其实和java里的set和get差不多的
作者: 似神仙    时间: 2015-12-5 09:12
Flowerkanzhe 发表于 2015-12-4 12:38
自动生成不是private的,而是protect

手打出来的属性是 protect     @property设定出来的是private
作者: 似神仙    时间: 2015-12-5 09:20
吃饱就睡 发表于 2015-12-4 00:59
那个好像不属于继承吧?上课时候老师提到的property生成的变量属于私有变量 没法继承的  只要子类智能提 ...

对的,是private




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2