- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
使用另外一种方式 初始化一个对象
SomeClass *object = [[SomeClass alloc] init];
学习前:你必须会什么?
new方法是用来干什么的,内部做了什么操作,如何使用new类方法创建一个对象
1.new方法是用于 一个类创建一个对象的类方法
2.内部做了三件事情
1.开辟存储空间 + alloc 方法
2.初始化所有的属性(成员变量) - init方法
3.返回对象的地址 offx16
3.SomeClass *object = [SomeClass new];
一、本章笔记
一、new 做了三件事情
1.开辟存储空间 + alloc 方法
2.初始化所有的属性(成员变量) - init方法
3.返回对象的地址
二、alloc
做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
三、int
1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
四、为什么要用alloc init 初始化对象
建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
注意 : alloc返回的地址, 和 init返回地址 是同一个地址
二、code
main.m
#pragma mark 07-new实现原理
#pragma mark 概念
/*
一、new 做了三件事情
1.开辟存储空间 + alloc 方法
2.初始化所有的属性(成员变量) - init方法
3.返回对象的地址
二、alloc
做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
三、int
1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
四、为什么要用alloc init 初始化对象
建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
注意 : alloc返回的地址, 和 init返回地址 是同一个地址
*/
#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.返回对象的地址
*/
// Person *p = [Person new];
// alloc 做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
Person *p = [Person alloc];
// init 1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
Person *p2 = [p init];
// 注意 : alloc返回的地址, 和 init返回地址 是同一个地址
NSLog(@"p1 = %p,p2 = %p",p,p2);// p1 = 0x100204dd0,p2 = 0x100204dd0
#warning 为什么要用alloc init 初始化对象
// 建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
Person *p3 = [[Person alloc]init];
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end
>>>.m
#import "Person.h"
@implementation Person
@end