self关键字

简介: self关键字 self:当前类/对象的指针(指向当前对象/方法调用者)作用1 当类里有变量名和成员变量名一样的时候,可以使用self区分例: 我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。

self关键字

self:当前类/对象的指针(指向当前对象/方法调用者)

作用1

当类里有变量名和成员变量名一样的时候,可以使用self区分

  • 例:

    我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    {
        int _age;
    }
    
    - (void)setAge:(int)age;
    - (int)age;
    
    @end
    
    
    @implementation People
    
    
    - (void)setAge:(int)age
    {
        _age = age;
    }
    
    - (int)age
    {
        int _age = 10;
        return self->_age;
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p setAge:26];
        int age = [p age];
        NSLog(@"年龄为:%d",age);
        return 0;
    }

    P1

作用2

在成员方法里,如果需要调用其他的成员方法,可以使用self

  • 调用成员方法1,让成员方法1再调用成员方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    - (void)fun1;
    - (void)fun2;
    @end
    
    
    @implementation People
    
    
    - (void)fun1
    {
        NSLog(@"执行了第一个方法");
        [self fun2];
    }
    
    - (void)fun2
    {
        NSLog(@"执行了第二个方法");
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p fun1];
        return 0;
    }

    P2

作用3

在类方法里,如果需要调用其他的类方法,可以使用self

  • 调用类方法1,让类方法1再调用类方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    + (void)fun1;
    + (void)fun2;
    @end
    
    
    @implementation People
    
    
    + (void)fun1
    {
        NSLog(@"执行了第一个类方法");
        [self fun2];
    }
    
    + (void)fun2
    {
        NSLog(@"执行了第二个类方法");
    }
    
    @end
    
    
    int main()
    {
        [People fun1];
        return 0;
    }

    P3

相关文章
|
1月前
|
存储 程序员 编译器
C++-关键字
C++-关键字
16 1
|
5月前
|
存储 算法 编译器
带你了解并掌握一些C++关键字的使用
带你了解并掌握一些C++关键字的使用
51 0
|
3月前
|
编译器 C语言
初识关键字
初识关键字
|
8月前
|
Java
关键字this
关键字this
27 0
单链表删除第一次关键字
删除第一次出现关键字为key的节点
|
编译器 程序员 Linux
C++关键字之likely和unlikely
C++关键字之likely和unlikely
632 0
C++关键字之likely和unlikely
|
编译器 程序员 C++
C++关键字之fallthrough
C++关键字之fallthrough
306 0
|
JavaScript 前端开发
29、this 关键字
this关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。
109 0
|
缓存 Java
volitile关键字
1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
1116 0