【Objective-C】06-OC对象中的self

OC对象中的self,有点像C#中的this。但是又有差异,self可以用来指向当前对象的对象方法,也可以指向当前对象的类方法。而this不能指向C#中的静态方法(类方法)。

self用途:

1、当方法中声明了一个跟类成员变量重名的变量,直接访问成员变量名时,默认优先访问方法内部声明的变量。当想要访问类的成员变量时,就要用self->成员变量名的方式来访问了。

2、谁调用了当前方法,self就代表谁

2.1 self出现在对象方法中,self就代表对象

2.2 self出现在类方法中,self就代表类

3、[self 方法名]可以调用类本身的其他对象方法/类方法


#import <Foundation/Foundation.h>
@interface Dog:NSObject
{
    //年龄
    int _age;
}
//设置年龄
- (void)setAge:(int)age;
//获得年龄
- (int)age;
//叫方法
- (void)bark;
+ (void)bark;
//跑方法
- (void)run;
+ (void)run;

@end

@implementation Dog
- (void)setAge:(int)age
{
    _age=age;
}
- (int)age
{
    return _age;
}
//对象方法:叫
- (void)bark
{
    //声明方法内部的成员变量,跟类的成员变量同名
    int _age=3;
    //直接访问_age,优先访问方法内部的成员变量
    //NSLog(@"汪汪汪,我今年%d岁了",_age);
    //通过self->成员变量名访问类本身的成员变量
    NSLog(@"汪汪汪,我今年%d岁了",self->_age);
}
//类方法:叫
+ (void)bark
{
    NSLog(@"我是类方法,汪汪汪");
}
//对象方法:跑
- (void)run
{
    //通过[self 方法名]调用类本身的其他方法。由于是在对象方法中调用,所以访问的是对象方法bark
    [self bark];
    NSLog(@"跑跑跑");
}
//类方法:跑
+ (void)run
{
    NSLog(@"我是类方法,跑跑跑");
}

@end

int main()
{
    Dog *d=[Dog new];
    [d setAge:10];
    //调用对象方法:叫
    [d bark];
    //调用对象方法:跑
    [d run];
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值