博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-self关键字
阅读量:4114 次
发布时间:2019-05-25

本文共 1137 字,大约阅读时间需要 3 分钟。

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。学习本专题之前,建议先学习专题。

OC中有一个self关键字,用法跟Java中的this类似,都是代表着当前方法的调用者。但self和this还是有区别的。

一、Java中的this只能用在动态方法中,不能用在静态方法中

1.在动态方法中使用this关键字

1 public class Student {2     private int age;3     public void setAge(int age) {4         this.age = age;5     }6 }

在第4行使用了this,这里的this代表着调用setAge方法的某个Student对象

 

2.如果在静态方法中使用this关键字,直接报错

 

二、OC中的self既可以用在动态方法中,也可以用在静态方法中

1.self在动态方法中

1 @implementation Student 2  3 - (void)test2 { 4  5 } 6  7 - (void)test3 { 8     [self test2]; 9 }10 11 @end

* 在第3行、第8行定义了2个动态方法

* 在第8行使用了self关键字,这里的self代表着调用test3方法的某个Student对象

* 第8行代码的作用是调用Student对象的动态方法test2

 

2.self在静态方法中

1 @implementation Student 2  3 + (void)test2 { 4  5 } 6  7 + (void)test3 { 8     [Student test2]; 9     10     [self test2];11 }12 13 @end

* 在第3、第7行定义了2个静态方法看清楚方法前面的+号

* 再看第10行,这里用到了self。看清楚了,是在静态方法test3中用到了self关键字

* 一开始就说了,self代表着当前方法的调用者。当前方法是test3,那test3的调用者是谁呢?肯定是Student这个类,因为test3是个静态方法。因此这里的self代表着Student这个类

* 因此,第8行、第10行的作用是一样,都是调用了静态方法test2

 

3.self总结

1> 在动态方法中,self代表着"对象"

2> 在静态方法中,self代表着"类"

3> 万变不离其宗,记住一句话就行了:self代表着当前方法的调用者

转载地址:http://mhzpi.baihongyu.com/

你可能感兴趣的文章
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>
从山寨Spring中学习Spring IOC原理-自动装配注解
查看>>
实例区别BeanFactory和FactoryBean
查看>>
Spring后置处理器BeanPostProcessor的应用
查看>>
Spring框架的ImportSelector到底可以干嘛
查看>>
Mysql中下划线问题
查看>>
微信小程序中使用npm过程中提示:npm WARN saveError ENOENT: no such file or directory
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
Vue项目中使用img图片和background背景图的使用方法
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>