天天看点

Objective-C - 属性类型修饰符

"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