文档章节

第04天OC语言(07):new实现原理

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 802
阅读 3
收藏 0
  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

使用另外一种方式 初始化一个对象 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

day04_07_01(官方alloc).png

day04_07_02(官方init)1.png

day04_07_02(官方init)2.png

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春
2017/07/19
0
0
OC语言的特性(一)-消息传递与调用函数的表现形式

我们在初学Objective-C时,都会觉得ObjC中的消息传递和其他语言的调用函数差不多,只是在OC中,方法调用用消息传递这一概念来代替。 那么到底怎样区别OC中的消息传递与其他语言的调用函数呢。...

浩浩老师
2015/09/08
1K
0
如何实现iOS热更新

如何实现iOS热更新 字数803 阅读7169 评论19 喜欢42 最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这...

法斗斗
2016/08/15
9
0
OC之类和对象

从今天开始我的IOS开发算是起步了,第一天学习Objective-C,感觉不是很爽。作为一名Java程序猿的我,第一次使用OC语法什么的都不习惯,尤其是@到处都是,不过,今天看看还是有点儿收获的。 ...

斯特凡
2015/06/12
0
0
新版 AppCode EAP,build 162.1236.3 发布

新版 AppCode 2016.2 EAP 发布,现已支持下载。如果您使用的是以前的2016.2 EAP build 版本,补丁更新是可用的。 该build版本修复了以下问题: Problem with launching applications on dev...

oschina
2016/07/07
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
1
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
1
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
1
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部