"Objective-C - 属性类型修饰符
1> 属性类型修饰符
作用:可以限定属性可以被访问的范围;
2> 四种属性访问修饰符:
1,
@public :公共的属性
在当前类/子类的外部,可以用对象名->_属性名访问,也可以使用setter/getter访问;
在当前类/子类的内部,可以直接用_属性名访问,也可以使用setter/getter访问;
2,
@protected :受保护的属性.
在当前类/子类的外部,不可以用对象名->_属性名访问,但可以使用setter/getter访问;
在当前类/子类的内部,可以直接用_属性名访问,也可以使用setter/getter访问;
3,
@private :
被 @private 修饰的属性叫做私有属性.
在当前类/子类的外部,不可以用对象名->_属性名访问,但可以使用setter/getter访问;
在当前类的内部,可以直接用_属性名访问,也可以使用setter/getter访问;
在当前子类的内部不可以直接用_属性名访问,但可以使用setter/getter访问;
4,
@package :
在一个框架内等价于@public
修饰符访问权限从大到小:@public > @package > @protected > @private
5> 属性的默认情况:
如果没有为属性写修饰符,那么默认为@protected.
6> 修饰范围:
从一个属性修饰符开始往下走,直到遇到下一个属性修饰符或者遇到大括号结束.
7> 使用建议:
a,无论何时,都不要使用@public
如果希望属性可以被外界访问,可以为其封装setter和getter方法;
b,如果父类的属性不希望子类访问,可以再父类的属性中使用@private访问.
c,如果父类的属性想给子类访问,但其他地方不行,可以使用@protected;
建议:使用默认的@protected