OC语言day04-07new实现原理

pragma mark new实现原理

pragma mark 概念

/**
 option键盘 查看方法的详情
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
    /*
     new 做了三件事情
     1. 开辟存储空间 + alloc 方法
     2. 初始化所有的属性(成员变量) - init 方法
     3. 返回对象的地址
     */
#warning alloc
//    Person *p = [Person new];
    // alloc 做了什么事情 : 1. 开辟存储空间 2. 将所有的属性设置为0 3.返回 当前实例对象的地址
    Person *p1 = [Person alloc];
    
#warning init
    // 1.初始化成员变量, 但是默认情况下init的实现 是什么都没有做. 2.返回初始化后的实例对象地址
    Person *p2 = [p1 init];
    // [[person alloc]init]
    // 注意: alloc返回的地址, 和init返回的地址是同一个地址
    NSLog(@"p1 = %p, p2 = %p",p1,p2);
    
#warning alloc init 简化
    // [[Person alloc] init]; == [Person new];
    // 建议大家 以后创建一个对象 都使用 alloc init, 这样可以统一编码格式
    Person *p3 = [[Person alloc]init];
    
    return 0;
}

Person.h //人类
#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;
@end
Person.m
#import "Person.h"

@implementation Person

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容