美文网首页
06-05、self关键字的使用

06-05、self关键字的使用

作者: 山中石头 | 来源:发表于2017-09-19 11:16 被阅读0次

只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象"

注意:

self会自动区分类方法和对象方法, 如果在类方法中使用self调用对象方法, 那么会直接报错
不能在对象方法或者类方法中利用self调用当前self所在的方法

使用场景:
可以用于在对象方法之间进行相互调用
可以用于在类方法之间进行相互调用

可以用于区分成员变量和局部变量同名的情况
- (void)setCpu:(int)cpu
{
self->cpu = cpu;
}

Iphone.m
#import "Iphone.h"

@implementation Iphone

/*
 类方法中可以直接调用类方法
 类方法中不可以直接调用对象方法
 类方法中不能访问成员变量
*/
+ (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
if (status == kFlahlightStatusOpen) {
//        [Iphone openFlahlight];
    // 其实在类方法中调用类方法除了可以使用类名调用以外, 还可以使用self来调用
    [self openFlahlight];
}else
{
//        [Iphone closeFlahlight];
    // self == Iphone
    [self closeFlahlight];
}
NSLog(@"拍照");

}

+ (void)openFlahlight
{
NSLog(@"打开闪光灯");
}

+ (void)closeFlahlight
{
NSLog(@"关闭闪光灯");
}

@end
Iphone.m
#import "Iphone.h"

@implementation Iphone

/*
 如果self在对象方法中, 那么self就代表调用当前对象方法的那个对象
 如果self在类方法中, 那么self就代表调用当前类方法的那个类
 总结: 
 我们只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象"
 */
- (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
if (status == kFlahlightStatusOpen) {
    // 其实self不仅仅可以调用我们的类方法, 还可以调用对象方法
    // self == 对象 == p
    NSLog(@"self = %p", self);
    [self openFlahlight];
}else
{
    [self closeFlahlight];
}
NSLog(@"拍照");
}

- (void)openFlahlight
{
    NSLog(@"打开闪光灯");
}

- (void)closeFlahlight
{
NSLog(@"关闭闪光灯");
}

@end

相关文章

  • 06-05、self关键字的使用

    只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象...

  • [OC]self与super调用本质分析

    一、self 基本说明 在日常开发中,我们经常使用到self关键字,比如,访问属性,调用实例方法等。那么self到...

  • Swift3.0 Self和self的区别

    相信大家都知道self关键字的作用, 但你知道Swift还有个Self关键字吗?Self关键字只能用在类里, 作为...

  • # Lua 快速笔记(三)OO

    class ps: 如果要使用self 关键字。new方法必须使用 : 声明。并且调用的时候也要记得用 : ext...

  • 04-面向对象语法-self关键字

    一、self(关键字)的用途: 二、self访问成员变量(self -> 成员变量) 三、self调用方法可以利用...

  • iOS易引起内存泄漏的原因总结

    一、循环引用 1. 在Block中使用self关键字 解决方案解决办法: 在Block中使用weakSelf打破循...

  • 12.18

    一、python USB是半双工通讯 self:关键字,是指对象 ——init——初始化构造函数关键字 self....

  • Django类视图

    关键字 response self request object

  • WeakSelf宏的进化

    我们都知道在防止如block的循环引用时,会使用__weak关键字做如下定义: __weaktypeof(self...

  • 避免循环引用的坑:在Block中使用私有成员变量

    大家都知道,在block中使用self经常会造成循环引用。通常解决办法就是使用__weak关键字先生成一个弱引用,...

网友评论

      本文标题:06-05、self关键字的使用

      本文链接:https://www.haomeiwen.com/subject/zprwsxtx.html