self和this的不同
在Java和C++中,this总是指的是当前实例地址,而在静态方法也就是类方法中,是不可以使用this的。在Objectvie-C中,self是既可以出现在实例方法中,也可以出现在类方法中,并且在不同的方法中有不同的意义。在实例方法中self代表实例地址,而在类方法中,self代表该Class对象地址。
#import <Foundation/Foundation.h> @interface X : NSObject - (void)printSelf;
+ (void)printSelf; @end @implementation X - (void)printSelf {
NSLog(@"-printSelf:%@", self);
} + (void)printSelf {
NSLog(@"+printSelf:%@", self);
} @end int main(int argc, const char * argv[]) {
@autoreleasepool {
X *x = [[X alloc] init];
[X printSelf];
[x printSelf];
}
return ;
}
上面的代码分别使用实例方法和类方法打印self,下面是控制台的输出:
aaarticlea/png;base64,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doqwDDACjAAjwAgwAowAI8AIMAKMACPACDACjMCCRICdIguy2rnQjAAjwAgwAowAI8AIMAKMACPACDACjAAjwE4RlgFGgBFgBBgBRoARYAQYAUaAEWAEGAFGgBFYkAiwU2RBVjsXmhFgBBgBRoARYAQYAUaAEWAEGAFGgBFgBNgpwjLACDACjAAjwAgwAowAI8AIMAKMACPACDACCxIBdoosyGrnQjMCjAAjwAgwAowAI8AIMAKMACPACDACjAA7RVgGGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFGYEEiwE6RBVntXGhGgBFgBBgBRoARYAQYAUaAEWAEGAFGgBFgpwjLACPACDACjAAjwAgwAowAI8AIMAKMACPACCxIBNgpsiCrnQvNCDACjAAjwAgwAowAI8AIMAKMACPACDAC7BRhGWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGIEFiQA7RRZktXOhGQFGgBFgBBgBRoARYAQYAUaAEWAEGAFGgJ0iLAOMACPACDACjAAjwAgwAowAI8AIMAKMACPw/7djxwQAAAAIwvq3JgiL4PRyKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKeAUWdYuNAECBAgQIECAAAECBAgQIOAUsQECBAgQIECAAAECBAgQIEBgKRC2QbKSlcSHagAAAABJRU5ErkJggg==" alt="" width="701" height="97" />
可以看到实例方法确实打印出了实例地址,而类方法只打印了一个类名X。
使用命令clang -rewrite-objc将Objective-C代码重写为C++进行探究。下面是重写之后的实例printSelf方法和静态printSelf方法:
static void _I_X_printSelf(X * self, SEL _cmd) {
NSLog((NSString *)&__NSConstantStringImpl__var_folders_p6_jy49zvqx2656qb8rbq64hc_w0000gn_T_X_80968d_mi_0, self);
} static void _C_X_printSelf(Class self, SEL _cmd) {
NSLog((NSString *)&__NSConstantStringImpl__var_folders_p6_jy49zvqx2656qb8rbq64hc_w0000gn_T_X_80968d_mi_1, self);
}
可以看到,实例printSelf方法接收的第一个参数名是self,类型是X *,而静态printSelf方法接收的第一个参数名也是self,但是类型是Class。
下面是main函数中调用这两个方法的重写代码:
X *x = ((X *(*)(id, SEL))(void *)objc_msgSend)((id)((X *(*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("X"), sel_registerName("alloc")), sel_registerName("init"));
((void (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("X"), sel_registerName("printSelf")); //调用静态printSelf方法
((void (*)(id, SEL))(void *)objc_msgSend)((id)x, sel_registerName("printSelf")); //调用实例printSelf方法
可以看到,main函数中调用静态printSelf方法时,第一个传递的参数为objc_getClass("X"),而调用实例printSelf方法时,第一个参数是对象x。
随机推荐
- [转载]Git常用命令
转载自: Git常用命令 Git配置 git config --global user.name "robbin" git config --global user.email & ...
- 怎么在网页中加入ICO图标
1.首先制作一个16x16的icon图标,命名为cssbbs.ico(这里的名字可以随便改!),放在根目录下.2.然后将下面的代码嵌入head区:<link rel="icon&quo ...
- Java学习笔记--泛型
一个泛型类就是具有一个或者多个类型变量的类. 我们可以只关注泛型,而不会为数据存储的细节而烦恼 . java泛型(一).泛型的基本介绍和使用 http://blog.csdn.net/lonelyro ...
- 开心菜鸟系列学习笔记------------javascript(6)
一.作用域链 1)函数的生命周期: 函数的生命周期分为创建和激活阶段(调用时),让我们详细研究它. 作用域链与一个执行上下文相关,变量 ...
- Java BufferedWriter与BufferedReader操作文本文件
/** * 采用字符流读取写入文本文件 */ public class FileUtil { /** * 写文件 * @param fileName * @param content */ publi ...
- Linux下编译第三方库的问题
因为各个Linux发行版之间的差异还是挺大的,有一些预安装在系统上的基本库是不一样的(不仅仅是版本,有一些是有和无的区别). 那么问题来了: 编译第三方库./configure的时候一般我们不会定制那 ...
- Android 获取当前日期算前一年、前一月、前一天Calendar
使用Calendar的add(int field, int amount)方法 Calendar ca = Calendar.getInstance();//得到一个Calendar的实例 ca.se ...
- Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析
程序通过JDBC 连接数据库异常,报 ORA-03137[12333]的错误. 当前程序的JDBC 驱动版本:ojdbc16-11.2.0.1.0.jar 数据库版本: 11.2.0.3 一. Log ...
- 提高效率的便签By番茄时间管理 win7标签,小功能,大作用
今日待办 把一些重要的事情,列入其中. 着重处理. 活动清单 罗列一些最近需要做的事情,不一定按照紧急重要的程度. 把活动清单中的事情,按照实际情况,安排到今日待办当中. 还有一个我喜欢的'头脑风暴' ...
- 【剑指offer】面试题27:二叉搜索树与双向链表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 思路: 假设已经处理了一部分(转换了左子树),则得到一个有序的双向链表,现在 ...