黑马程序员技术交流社区

标题: self的使用 [打印本页]

作者: lvzhehappy    时间: 2015-4-20 19:23
标题: self的使用
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    int _age;
}
- (void)test1;
- (void)test2;
+ (void)test2;

+ (void)test3;
+ (void)test4;
- (void)test4;
@end

@implementation Person
- (void)test1
{
    _age = 20;
   
    int _age = 10;
    NSLog(@"调用了-test1方法-%d", _age); //10
    [self test2];
}

- (void)test2
{
    int _age = 10;
    NSLog(@"调用了-test2方法-%d", self->_age);
}

+ (void)test2
{
    int _age = 20;
    NSLog(@"调用了+test2方法-%d", _age); //20
}

+ (void)test3
{
    NSLog(@"调用了+test3方法");
    [self test4];
}

+ (void)test4
{
    NSLog(@"调用了+test4方法");
}

- (void)test4
{
    NSLog(@"调用了-test4方法");
}
@end

int main()
{
    [Person test3];
   
    Person *p = [Person new];
    [p test1];
    return 0;
}
输出:
调用了+test3方法
调用了+test4方法
调用了-test1方法-10
调用了-test2方法-20
发现规律:self既可以在对象方法中使用,也可以在类方法中使用
                 在方法中定义与成员变量名相同的变量,若不加self,使用的是新定义的变量,而不是成员变量

作者: mony    时间: 2015-4-20 22:42
个人觉得,OC中的self和其他语言中的this比较像




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2