【Objective-C】08-self关键字

  • 一、Java中的this只能用在动态方法中,不能用在静态方法中
  • 二、OC中的self既可以用在动态方法中,也可以用在静态方法中

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

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代表着当前方法的调用者

时间: 2024-10-05 21:09:34

【Objective-C】08-self关键字的相关文章

08.self关键字

一.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

面向对象(笔记整理)

面向对象 一.什么是面向对象 * 面向对象的定义: - 在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的   联系,这种思想就是面向对象. * 对象: - 在现实生活中存在的具体的一个事物. * 类: - 实际就是对某种类型事物的公共属性与行为的抽取.(类是一个抽象的概念,就相当   于图纸) * 对象与类的关系: - 类时对象的模板 - 汽车图纸 - 对象是类的实例 - 各种汽车 * 面向对象的核心思想: - 找适合的对象做适合的事. * 面向对象的三大特征: - 1. 封装

JavaSE学习总结第07天_面向对象2

07.01 成员变量和局部变量的区别 1.在类中的位置不同 成员变量    类中方法外 局部变量    方法内或者方法声明上 2.在内存中的位置不同 成员变量   堆内存 局部变量   栈内存 3.生命周期不同 成员变量   随着对象的存在而存在,随着对象的消失而消失 局部变量   随着方法的调用而存在,随着方法的调用完毕而消失 4.初始化值不同 成员变量   有默认的初始化值 局部变量   没有默认的初始化值,必须先定义,赋值,才能使用. 07.02 方法的形式参数是类名的调用 例: 1 cl

黑马程序员_JavaSE学习总结第07天_面向对象2

------- android培训.java培训.期待与您交流! ----------  07.01 成员变量和局部变量的区别 1.在类中的位置不同 成员变量    类中方法外 局部变量    方法内或者方法声明上 2.在内存中的位置不同 成员变量   堆内存 局部变量   栈内存 3.生命周期不同 成员变量   随着对象的存在而存在,随着对象的消失而消失 局部变量   随着方法的调用而存在,随着方法的调用完毕而消失 4.初始化值不同 成员变量   有默认的初始化值 局部变量   没有默认的初始

百度哈斯发卡号是减肥哈卡斯加分了卡斯

http://www.ebay.com/cln/ta_ya20/-/167521224015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398283011/2015.02.08 http://www.ebay.com/cln/ta_ya20/-/167521242015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398294011/2015.02.08 http://www.ebay.co

克同极用后管期果要议向中如极示听适VybVfesyhpR

社保划到税务征收,将大大提升社保费的征管效率.税务的征管能力是目前而言最强的,以后税务征收社保不是代收,属于本职了. 之前税局要把社保信息和交个税的工资比对起来有困难!现在好了,个税是自己的,社保也是自己的,比对困难?不存在的! 这一变革,会给那些不给员工上社保.不全额上社保的企业致命一击! 最新案例 前段时间的发改委关于限制特定严重失信人乘坐民航的一则意见--发改财金[2018]385号,其中还有税务总局的联合署名. http://weibo.com/20180408PP/2309279811

Objective -C NSDate、Category   、Extension、Protocol

NSDate的使用 NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区 使用+date方法获取当前日期和时间 例如  :NSDate*nowDate = [NSDate date]: 注意,,NSLog(@"%@",nowDate): 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间 NSTimeinterval NSTimeInterval(即double类型) 用以表示以秒为单位的时间间隔 可以使用-initWithT

volotile关键字的内存可见性及重排序

在理解volotile关键字的作用之前,先粗略解释下内存可见性与指令重排序. 1. 内存可见性 Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存,并且线程只能访问自己的工作内存,不可以访问其它线程的工作内存.工作内存中保存了主内存中共享变量的副本,线程要操作这些共享变量,只能通过操作工作内存中的副本来实现,操作完毕之后再同步回到主内存当中,其JVM内存模型大致如下图. 而JAVA内存模型规定工作内存与主内存之间的交互协议,其中包括8种原子操作: 1)

如何为自己的网站添加关键字与描述

meat标签的奥妙. META标签,是HTML语言head区的一个辅助性标签.在几乎所有的page里,我们都可以看 到类似下面这段html代码: ----------------------------------------------- <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> ------------

Qt for iOS,Qt 与Objective C混合编程

项目设置 既然要聊 Qt 混合 OC 编程,首先要简单介绍一下 Objective C .我只有一句话:Go,问搜索引擎去.因为我所知实在有限,怕误导了您.当然如果您不怕,往下看吧. OC源文件介绍 首先我要说一下 Objective C 的源文件,后缀是.m 或 .mm ,在 .mm 文件里,可以直接使用 C++ 代码.所以,我们要混合 Qt 代码与 OC 代码,就需要在 Qt 项目里加入 mm 文件. pro 文件配置 Qt SDK for Mac ,安装之后, Qt Creator 会使用