1.创建class类 (commd + N)
    image.png

    2.类分为两个文件,分别是.h .m**

    • .h 为类声明文件
    • .m 为类逻辑实现文件
      1. // class.h
      2. @interface class : NSObject // : 表示class继承于 NsObjct

    3.引用类,实例化

    1. #import "class.h" //引入声明文件
    2. init main() {
    3. @autoreleasepool{
    4. //类名 变量名 = [类名 方法名]
    5. class *class1 = [class new]; // 实例化class类为 class1, * 表示是指针
    6. class *class2 = [class new]; // 实例化class类为 class2
    7. NSLog(@"class1 = %p", class1); //打印class1指针地址
    8. NSLog(@"class2 = %p", class2);
    9. }
    10. return 0;
    11. }

    4.声明类的成员变量(成员变量属于私有变量,不可在类外部访问)

    // class.h
    #import <Foundation/Foundation.h>
    
    @interface class : NSObject
    {
        NSString *_name; // 声明私有变量 _name
        int _arg;        // 声明私有变量 _arg
        int _sex;        // 声明私有变量 _sex
    }
    @end
    
    // class.m
    #import "class.h"
    
    @implementation class 
    - (instancetype) init // init方法声明
    {
        self = [super init];
        if (self) {
            _name = @"张三";
        }
        return self;
    }
    @end
    

    5.声明类的属性(属性可在外部访问和使用)

    // class.h
    
    #import <Foundation/Foundation.h>
    
    
    @interface class : NSObject
    {
        NSString *_name;
        int _arg;
        int _sex;
    }
    @property(nonatomic, strong) NSString name; // 暴露name变量
    @end
    
    
    // main.m
    #import "class.h"
    
    ...code
        NSLog(@"class1.name = %S", class1.name);
    ...code
    

    6.声明类的方法

    // class.h 声明文件
    #improt <Foundation/Foundation.h>
    
    @interface class : NSObject
    {
       NSString *_name;
    }
    
    /** 方法类型 (- 代表非静态的方法,+ 代表类静态方法) */
    /** :(NSString *)name -> :代表有参数,(NSString *) 代表参数类型, name 代表参数名 */
    /** :(int)a andB:(int)b  -> 代表有两个参数,分别为int a, int b */
    
    - (int) add:(int)a andB:(int)b;     // 声明实例的方法 (返回数字) add (a: int, b:int)
    - (void) setName:(NSString *)name;   // 声明实例的方法 (无返回) setName (name :字符串)
    - (NSString *)getName;                // 声明实例方法 (返回字符串) getName (无参数)
    + (void) log;                          // 声明类静态方法 (无返回) log(无参数)
    @end
    
    // class.m 逻辑文件
    #import "class.h"
    
    @implementation class
    
     // 实现setName方法逻辑
    - (void) setName: (NSString *)name  
    {
        _name = name;
    }
    // 实现getName方法逻辑
    - (NSString *) getName     
    {
        return _name;
    }
     // 实现静态方法逻辑
    + (void) log
    {
        NSLog(@"12212"); 
    }
     // 实现双参数方法逻辑
    - (int) add: (int)a andB:(int)b
    {
        return a + b;
    }
    @end
    
    // main.m 调用
    code...
            [class1 setName:@"李四"];                // 调用实例方法
            NSLog(@"name = %s", [class1 getName]);   //  调用实例方法
            [class log];                             //   调用类方法
            [class1 add:1 andB:2];                   // 调用实例方法
    code...
    

    7.声明类的静态变量

    // class.m
    
    #import "class.h"
    
    @implementation class
    {}
    static NSString *SEX = '南';
    
    + (viod) console
    {
        NSLog(@"sex -> %s", SEX);
    } 
    @end