文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 802
阅读 2
收藏 0
点赞 0
评论 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
博文 354
码字总数 137380
作品 0
朝阳
JavaScript 30天每日效果图

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

黎跃春 ⋅ 2017/07/19 ⋅ 0

OC语言的特性(一)-消息传递与调用函数的表现形式

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

浩浩老师 ⋅ 2015/09/08 ⋅ 0

如何实现iOS热更新

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

法斗斗 ⋅ 2016/08/15 ⋅ 0

OC之类和对象

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

斯特凡 ⋅ 2015/06/12 ⋅ 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 ⋅ 2

Object-C基础-07-内存管理

一、基本原理 1.什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回收...

Corwien ⋅ 2016/03/20 ⋅ 0

Object-C基础-02-第一个OC的类

一、语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类;在OC中,一般用2个文件来描述一个类: 1> .h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interfac...

Corwien ⋅ 2016/03/17 ⋅ 0

IOS,objective_C中用@interface和 @property 方式声明变量的区别

转自http://www.cnblogs.com/letmefly/archive/2012/07/20/2601338.html 一直有疑问,在objective_C中声明变量会有 2种方式,今天有空和网友讨论了下,并且自己查了stackoverflew后算是稍微弄...

AAAAdler ⋅ 2012/12/28 ⋅ 0

Lua与ObjC的交互

写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语言交互的问题。平时在网上看得比较多的是使用JS(JavaScript)与iOS原生代码...

vimfung ⋅ 2016/12/29 ⋅ 7

Object-C消息转发

现在在OC代码里,用 performSelector: 这系列的方法,都会产生一个警告,告诉我们无法识别将要调用的方法,但这只是警告,还不是错误,仍然能运行起来,而且还运行的好好的。 OC是一门动态语...

AAAAdler ⋅ 2015/11/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部