A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvzhehappy 中级黑马   /  2015-4-20 19:23  /  693 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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,使用的是新定义的变量,而不是成员变量

1 个回复

正序浏览
个人觉得,OC中的self和其他语言中的this比较像
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马