A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 562413895@qq.co 中级黑马   /  2015-7-24 09:44  /  836 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、OC提供了self和super关键字,用于在方法中引用执行该方法的对象。
super发送消息可以将方法实现分发其父类,可以重写一个已有的方法来修改或将它添加到现有的方法中
2、self的应用场景
1)、用在类方法中
self指代的是当前类
例:定义一个类Person
           +(void)run{
            NSLog(@"人在跑");
            NSLog(@"%p",self);//此时的self指代的是当前类Person的
        } //类方法
       Person *p=[Person new];
      NSLog(@"Person=%p",[p class]);//[p class]就是返回当前类的地址
2)、用在对象方法中
self指代的是调用当前方法的那个对象。
例:-(void)run{
            NSLog(@"人在跑");
            NSLog(@"%p",self);//此时的self指代的是调用run方法的对象p
        } //对象方法
       Person *p=[Person new];
       [p run];//对象p调用run方法
3)、访问成员变量
       self在对象方法中,可以利用self->属性名称的方式访问成员变量。
       应用场景:当存在局部变量和成员变量名同名时使用self。
例:在test方法中设置了成员变量age的值,但是成员变量名和方法的形参名age同名,则局部变量会屏蔽成员变量的作用域。此时就需要用self:self->age=sge;
注意:实例变量就是类的成员变量,它可以看做是全局变量(因为实例变量在很多方法中都可以使用,所以它可以看作是全局变量);方法的形参看作是局部变量
4)、self在OC的内存管理特殊使用
总结:self:谁调用当前方法,self就代表谁。
[self  方法名称];调用类方法/对象方法

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马