OC基础-self关键字的用法10

来源:互联网 发布:王宝强离婚案 知乎 编辑:程序博客网 时间:2024/06/06 03:11

1. 在方法的内部可以定义1个和属性名相同的局部变量.

    这个时候如果在方法中访问这个同名的变量,访问的是局部变量.

    问题1:如果这个时候我就是要访问那个同名的属性,怎么办?


    问题2:1个对象方法中要调用当前对象的另外1个对象方法怎么办?




2. self:自己的.

    JavaC#中的this关键字有1点点像.


    可以在对象方法和类方法中使用.

    self1个指针.在对象方法中self指向当前对象.在类方法中self指向当前类.



3. self用在对象方法中.


    1). self在对象方法中,指向当前对象.


    当前对象:谁调用方法谁就是当前对象.



    2). 在对象方法中,self指向当前对象,然后这又有什么用?


    a. 可以使用self显示的访问当前对象的属性.

        self->属性代表访问的是当前对象的这个属性.


    b. 可以使用self来调用当前对象的其他的对象方法.


    3). 对象方法中使用self的场景.


    a. 必须使用self的场景.

        -> 如果在方法中存在和属性同名的局部变量,

        你如果想要访问同名的局部变量,直接写就可以了.

        你如果想要访问当前对象的同名属性必须使用self


        -> 在对象方法中,如果要调用当前对象的其他的对象方法必须使用self.


    b.选用self的场景.


        在方法中不存在和属性同名的局部变量如果这个时候想要访问当前对象的属性

        用不用self效果都是一样的.都是访问的当前对象的属性.



       属性要求以下划线开头局部变量不要求以下划线开头按照这个规范来实际上是不会重名的.




4. slef用在类方法中.


    1). 类加载.当类第1次被访问的时候会将类的代码存储在代码区.

    代码区中用来存储类的空间也有1个地址.



    2). 在类方法中self也是1个指针.执行当前这个类在代码段中的地址.

    self在类方法中就相当于是当前这个类.


    3). 总结1下取到类在代码段中的地址的方式.


    a. 调试查看对象的isa指针的值.

    b. 在类方法中查看self的值.

    c. 调用对象的对象方法class就会返回这个对象所属的类在代码段中的地址.

    d. 调用类的类方法class就会返回这个类在代码段中的地址.



    4). 有什么用?

    可以在类方法中使用self来显示的调用本类的其他的类方法.

    使用建议,如果要在当前类方法中调用本类的其他的类方法虽然可以直接使用类名但是建议使用self





5.  对象方法可以声明多次.但是只会认为有1.

    对象方法如果有多次声明但只能实现1否则就会报错.


    对象方法之间是不能重名的.

    类方法之间也是不可以重名的.



    但是,对象方法和类方法是可以重名的.

    通过类名来调用调用的就是类方法

    通过对象名来调调用的就是对象方法.



6. 注意


    1). 在对象方法中,self代表当前对象.

    所以可以通过self访问当前对象的成员.


    在对象方法中不能使用self调用本类的类方法.



    2). 在类方法中,self代表当前这个类.


    所以,可以通过self调用当前类的其他的类方法.


    在类方法中 不能使用self访问对象的成员.不能去直接访问属性和调用对象方法.