码迷,mamicode.com
首页 > 其他好文 > 详细

OC中self关键字简述

时间:2016-05-16 21:41:59      阅读:673      评论:0      收藏:0      [点我收藏+]

标签:

self关键字

简述

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

2. self是个指针

3. 在对象方法使用self

  1. self是一个指针, 在对象方法中指向当前对象——谁调用这个对象方法, 谁就是这个对象方法的当前对象

  2. 作用: 可以使用self来显式的访问当前对象的成员

    可以使用self关键字来显式的访问当前对象的属性

    以前都是对象指针->属性

    现在可以 self->属性

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

  3. 必用场景

    如果方法中存在和属性名同名的局部变量, 这时候如果写变量名就访问的是这个局部变量, 如果想要访问属性就必须用self

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

  4. 选用场景

    在方法中, 如果没用和属性同名的局部变量, 写属性名那就是访问的属性名

  5. 注意: 属性的名字以下划线开头, 局部变量不要以下划线开头, 这样就不会发生重名的这种问题

4. 在类方法中使用self

  1. 类加载: 当类第一次被访问的时候, 就会就爱那个这个类存储在代码段, 一旦存储, 直到程序结束才会被释放

  2. 在类方法中, self也是一个指针, 这个指针指向当前这个类在代码段中的地址 

  3. 如何拿到类在代码段的地址:

    1. 查看对象的isa指针

    2. 在类方法中查看self指针

    3. 对象方法class, [对象 class], 得到这个对象所属的类的地址

    4. 类方法class, [类 class] 也可以得到这个类所在的地址

    5. 在类方法中, self确实是指向当前这个类的. self代表当前这个类, 在某种程度上, 我们就可以这么认为, self就是当前类, 当前类和self完全等价->在类方法中, 可以使用当前类的地方, 完全可以使用self来代替

      在类方法中, 可以使用self来代替当前类, 使用当前类的地方, 可以使用self来代替——要调用当前类的其他类方法的地方, 就可以用self来调用

      在类方法中创建当前类的对象的时候, 也可以用self来代替[self new];

      但是不能够用来声明变量;

self总结

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

2. 在对象方法中, self代表当前对象, 可以使用self来显式的访问当前对象的成员

  可以使用self来访问当前对象的属性, 调用当前对象的对象方法

   注意: 在对象方法中不能使用self来调用类方法, 因为类方法必须使用类名来调用, 而这个时候, self不代表当前类

3.在类方法中, self代表当前类→可以使用self来调用当前对象的类方法

     注意: 在类方法中, 不能使用self访问属性调用对象方法

OC中self关键字简述

标签:

原文地址:http://www.cnblogs.com/SquirrelStock/p/5499178.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!