0C-009.OC中的self关键字

self的作用
1、self在对象方法中,它是调用这个方法的对象
2、self在类方法中就代表类,它可以调用其他的类方法

总结:

谁调用这个方法那么self就是谁

#import <Foundation/Foundation.h> //--------main函数
#import "LSPerson.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        LSPerson *p = [[LSPerson alloc] init];
        [p changAge:10];
        NSLog(@"%d",[p age]);//打印50
        
        int rs = [LSPerson sumOfNum:10 andOther:20];
        NSLog(@"%d",rs); //打印30
        rs = [LSPerson averageOfNum:10 andOther:20];
         NSLog(@"%d",rs); //打印15
    }
    return 0;
}
#import <Foundation/Foundation.h>//--------LSPerson.h

@interface LSPerson : NSObject
{
    int _age;//年龄
}

- (void) changAge:(int) age;
- (void) setAge:(int) age;
- (int) age;
+ (int) sumOfNum:(int) num1 andOther:(int)num2; //求和类方法
+ (int) averageOfNum:(int) num1 andOther:(int) num2;//求平均类方法

@end
/*                                     --------LSPerson.m
 局部变量、成员变量和全局变量
 1、在方法内部可以定义与成员变量同名局部变量,
 那么在这个局部变量的作用域范围内他会覆盖成员变量
 2、如果定义与成员变量同名局部变量,还想操作局部变量;通过self来访问
 3、全局变量,整个文件共享的,所有方法中共享的;
 那么一个方法中修改这个全局变量其他方法中使用这个全局变量都会修改
 
 4、变量作用域中存在一个原则:就近原则
 查找的顺序  局部变量 -》 成员变量 -》 全局变量
 
 self与方法
 1、self在对象方法中,它是调用这个方法的对象
 2、self在类方法中就代表类,它可以调用其他的类方法
 
 总结:
 谁调用这个方法那么self就是谁
 
 */
#import "LSPerson.h"

@implementation LSPerson
- (void) changAge:(int) age{
    _age = age;
    NSLog(@"%d",_age);//打印10
    int _age = 20; //定义了同名的局部变量,会覆盖成员变量
    NSLog(@"%d",_age);//打印20
    self->_age = 50;//可以同self调用,来解决同名问题

}
- (void) setAge:(int) age{
    _age = age;
}
- (int) age{
    return _age;
}
+ (int) sumOfNum:(int) num1 andOther:(int)num2{
    return num1 + num2;
}
+ (int) averageOfNum:(int) num1 andOther:(int) num2{
    return [self sumOfNum:num1 andOther:num2] / 2;   //这里的self代表LSPerson类
}
@end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值