黑马程序员技术交流社区

标题: OC中的self关键字介绍 [打印本页]

作者: 562413895@qq.co    时间: 2015-7-24 09:44
标题: OC中的self关键字介绍
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  方法名称];调用类方法/对象方法




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