黑马程序员技术交流社区

标题: OC私有属性和真私有属性! [打印本页]

作者: ZzzZZzz    时间: 2016-7-10 17:29
标题: OC私有属性和真私有属性!
1.什么叫做私有属性
一个类的.h中声明的属性,用@private修饰,这样的属性叫做私有属性

2.私有属性的特点
1>
在当前类/子类外部, 不可以通过对象名->_属性名 访问,可以通过getter/setter访问
在当前类的内部: 可以用_属性名访问,也可以通过getter/setter访问.
在子类的内部:不可以用_属性名访问但是可以通过getter/setter访问.

2>子类是可以继承

int main(int argc, const char * argv[]) {
   
    HMStudent *student = [HMStudent new];//断点走到这里可以看到父类的私有属性确实继承下来了
    return 0;
}
3>在子类内部直接访问,在子类外部直接访问都是有只能提示,但是不能用
-(void)test
{
    _name//不允许访问
}
@end

3.为什么有"真"私有属性的存在
就是希望在子类内部和子类外部直接访问的时候连提示都没有了!


4.如何给一个类添加一个真私有属性?
1>定义在类的.m中,访问限制是和@private相同的,只不过在子类的内部和子类的外部访问的时候没有智能提示.
2>真私有属性上面的任何属性修饰符都是无效的!




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