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