黑马程序员技术交流社区
标题: 关于关键字self的问题 [打印本页]
作者: 程序猿-2014 时间: 2014-4-10 13:21
标题: 关于关键字self的问题
本帖最后由 程序猿-2014 于 2014-4-11 14:34 编辑
- (void)test1
{
_age = 20;
int _age = 10;
NSLog(@"%d", _age);
[self test2];
}
- (void)test2
{
int _age = 10;
NSLog(@"%d", self->_age);
}
如题 当我调用test1时 先输出了个10 第二次为什么会输出个20呢?
作者: 啊康 时间: 2014-4-10 13:35
首先当你先调用test1时,由于自己在函数内部定义了_age变量,所以执行下一个输出语句的时候自然会在函数本身所分配的存储空间寻找看是否存在_age变量,如果有就输出,如果没有才会去更上层去寻找。当函数执行到
[self test2]这里的时候,由于self本身指的就是调用函数所对应的对象,那么当执行到 NSLog(@"%d", self->_age);这里的时候所输出的_age指的是self本身对象所指向的自己的成员变量,而这里变量在test1中已经被赋值为20了所以第二次输出的自然是20.谢谢!
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |