OC — self指针

1、self 表示当前对象
2、是在执行该函数,self 就表示谁。

如下:
[xiaomi setName:@"小米"];   // 这里 self 表示 xiaomi 对象
[xiaoli setName:@"小李"];
-(void) setName: (NSString *)newName
{
  那么 self 在使用该类方法,self 就表示类的本身
    //self 其实就是调用该函数的对象  [对象 setName:@"小米"];  
      换个对象变成 xiaoli在调用这个函数  [对象 setName:@"小李"]; 那么 self 就表示 xiaoli ;总的来说是谁在调用这个函数,self 就表示谁。
    //
     [self setNewName: newName];

}
-(void) setNewName: (NSString *)newName
{
      _name = newName;
}

3、self 如果在类的方法里面,表示类的本身;如果是在对象里面,表示对象本身。

如下:
有一个Dog类

1、
类方法调用:[类 类方法];
int age = [Dog maxAge];
+ (int) maxAge
{
    // 上面所说的 self 是一个当前的本对象(是在 -(){方法里面} ) 
   // 在 + (静态方法){类方法} self 就表示本类
    NSLog(@"%@",self);
    return 150;
}    

------------------------------------------------------------

2、
Dog * dog = [Dog xiaoGou]; //这里 self 表示 Dog 类

+ (id) xiaoGou {
       id obj = [[self alloc] init];  等于  id obj = [[Dog alloc] init]; 
      // 前者写法提高通用性,这时候 self 就表示当前的类
      //另一种写法
       id obj = [[[self  class] alloc] init];
      //那么这个class 就是 让强迫返回 self 这个类的类,就是返回当前类的类
        return obj;
  }
  
  ------------------------------------------------------------------------------------------------------------

3、
+ (id) dogName: (NSString *)newName withAge: (int) newAge {
    // 这里的 self 也是表示当前的这个 类
      id obj = [[self alloc] initWithName: newName withAge: newAge ];
    return obj;
}

-(id) initWithName: newName withAge: newAge {
    self = [super init]; //这里super 表示 self的父对象,面向对象中有继承,所以super就是基类对象
  if (self) {
        [self setName: newName];
        [self setAge: newAge];
  }
return self;

}
4、self 表示谁,在运行时是由编译器来决定的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,640评论 30 472
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,845评论 0 4
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,081评论 0 9
  • 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的转载 这篇文章完全是基于南峰子老师博客的...
    西木阅读 30,894评论 33 466
  • 苹果官方文档翻译 《Objective-C语言编程》(Programming with Objective-C) ...
    fever105阅读 26,328评论 19 129

友情链接更多精彩内容