美文网首页八天学会OC
第03天OC语言(07):self注意点和应用场景

第03天OC语言(07):self注意点和应用场景

作者: liyuhong | 来源:发表于2017-07-20 16:10 被阅读6次
    • 不要等到明天,明天太遥远,今天就行动。
    须读:看完该文章你能做什么?

    self的使用注意

    学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

    什么是self,什么是类


    一、本章笔记
     注意:
     self 会自动区分类方法 和 对象方法, 如果在类方法中 使用self调用对象方法,那么会直接报错
     > 不能在对象方法 或者 类方法中 利用self 调用 当前self 所在的方法(死循环)
     
     使用场景 :
     可以用于 在对象方法之间进行相互调用
     可以 用于 类方法之间进行相互调用
     
     可以用于区分成员变量 和 局部变量同名的情况
    
    二、code
    main.m
    #pragma mark 07-self注意点和应用场景
    #pragma mark - 代码
    #import <Foundation/Foundation.h>
    #pragma mark 类
    #import "IPhone.h"
    #pragma mark - main函数
    int main(int argc, const char * argv[])
    {
        [IPhone carameWithFlahlightStatus:kFlahlightStatusOpen];
    //    NSLog(@"p = %p",p);
    //    [p carameWithFlahlightStatus:kFlahlightStatusOpen];
        return 0;
    }
    
    Iphone
    >>>.h
    #import <Foundation/Foundation.h>
    
    typedef enum
    {
        kFlahlightStatusOpen,
        kFlahlightStatusClose
    }FlahlightStatus;
    
    @interface IPhone : NSObject
    {
        int cpu;
    }
    - (void)setCpu:(int)cpu;
    
    + (void)carameWithFlahlightStatus:(FlahlightStatus)status;
    + (void)openFlashlight;
    + (void)closeFlashlight;
    
    @end
    >>>.m
    #import "IPhone.h"
    
    @implementation IPhone
    + (void)carameWithFlahlightStatus:(FlahlightStatus)status
    {
        if (status == kFlahlightStatusOpen)
        {
            [self openFlashlight];
        }
        else
        {
            [self closeFlashlight];
        }
        
        NSLog(@"拍照");
    }
    
    // 打开闪光灯
    + (void)openFlashlight
    {
        NSLog(@"打开闪光灯");
    //    NSLog(@"self = %p",self);
        [self openFlashlight]; // 会引发死循环
    
    }
    // 关闭闪光灯
    + (void)closeFlashlight
    {
        NSLog(@"关闭闪光灯");
    
    }
    
    - (void)setCpu:(int)cpu
    {
        self->cpu = cpu;
    }
    
    @end
    

    相关文章

      网友评论

        本文标题:第03天OC语言(07):self注意点和应用场景

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