OC语言day04-08构造方法基本概念

pragma mark 构造方法基本概念

pragma mark 概念

pragma mark 代码

#import 
#pragma mark 类
#import "Person.h"

#pragma mark main函数
int main(int argc, const char * argv[])
{
#warning 构造方法的基本概念
    /*
    在OC中 init开头的方法, 我们称之为构造方法
    构造方法的用途: 用于初始化一个对象, 让某个对象 一创建出来就拥有 某些属性
     */
    
    Person *p = [[Person alloc]init];
//    p.age = 6;
    NSLog(@"%i",p.age);
    
    Person *p2 = [[Person alloc]init];
//    p2.age = 6;
    NSLog(@"%i",p2.age);
    
    Person *p3 = [[Person alloc]init];
//    p3.age = 6;
    NSLog(@"%i",p3.age);
    
    
    return 0;
}



Person.h //人类
#import 

@interface Person : NSObject

@property int age;

// 重写init方法, 在init方法中初始化 成员变量

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

@implementation Person

// 重写init方法, 在init方法中初始化 成员变量
// 注意 : 重写init 方法 必须按照苹果规定的格式重写, 如果不按照规定会 引发 一些未知的错误
// 1. 必须先初始化父类, 再初始化子类
// 2. 必须判断父类是否 初始化成功, 只有父类初始化成功 才能继续初始化子类
// 3. 返回当前对象的地址

/*
- (instancetype)init
{
    // 1.初始化父类
    // 只要父类初始化成功, 就会返回对应的地址, 如果初始化失败, 就会返回nil
    // nil == 0 == 假 == 没有初始化成功
    self = [super init]; // 初始化成功 会返回一个地址 把地址赋给self
    
    // 2.判断父类 是否 初始化成功
    if (self != nil) // 说明 父类不为空 就可以赋值了
    {
        // 3.初始化子类
        // 设置属性的值
        _age = 6;
    }
    
    // 4.返回地址
    return self;
}
*/

#pragma mark 简化1
/*
- (instancetype)init
{
    self = [super init]; // self = nil == 0;
    
    if (self)
    {
        // 初始化子类
        _age = 6;
    }
    return self;
}
 */

#pragma mark 简化2
- (instancetype)init
{
    // 注意 不要把 = 写成 ==
    // = 是一个赋值运算符 == 是一个逻辑运算符
    // 一定要将 [super init]的返回值 赋值给self
    if (self = [super init])
    {
        // 判断self 是不是等于空 如果是不等于空 就初始化属性
        _age = 6;
    }
    // 如果等于空 直接返回self
    return self;
}

@end

你可能感兴趣的:(OC语言day04-08构造方法基本概念)