您的位置:首页 > 职场人生

黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域

2015-02-08 20:42 525 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、点语法

点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。

点语法的本质是方法调用

p.age = 10;  == [p setAge:10];

int a = p.age;  == [p age];


***********************************************

二、id

id是万能指针,能指向\操作任何OC对象   
id == NSObject *
id d = [Person new];


**************************************

三、构造方法

构造方法: 用来初始化对象的方法,是个对象方法,-开头

重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值

 重写构造方法的注意点

 1.先调用父类的构造方法([super init])

 2.再进行子类内部成员变量的初始化

 完整地创建一个可用的对象

     1.分配存储空间  +alloc

     2.初始化 -init

1>调用+alloc分配存储空间

Person *p1 = [Person alloc];

2>调用-init进行初始化

Person *p2 = [p1 init];

**************************************

四、Category

 分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法

 使用注意:

 1.分类只能增加方法,不能增加成员变量

 2.分类方法实现中可以访问原来类中声明的成员变量

 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用

 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类 --> 父类

**************************************

成员变量的作用域

  @public : 在任何地方都能直接访问对象的成员变量

  @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)

  @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected)

  @package : 只要处在同一框架中,就能直接访问对象的成员变量

  @interface和@implementation中不能声明同名的成员变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐