oc31--new实现
//
// main.m
// new方法实现原理 #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { /*
new做了三件事情
1.开辟存储空间 + alloc 方法
2.初始化所有的属性(成员变量) - init 方法
3.返回对象的地址
*/
Person *p = [Person new]; // alloc做了什么事情: 1.开辟存储空间(alloc都是在堆里面创建的区域,) 2.将所有的属性设置为0 3.返回当前实例对象的地址
Person *p1 = [Person alloc];
// 1.初始化成员变量, 但是默认情况下init的实现是什么都没有做 2.返回初始化后的实例对象地址
Person *p2 = [p1 init];
// [[Person alloc] init]; // 注意: alloc返回的地址, 和init返回的地址是同一个地址
NSLog(@"p1 = %p, p2 = %p", p1, p2); //p1 = 0x100202630, p2 = 0x100202630 // [[Person alloc] init]; == [Person new];
// 建议大家以后创建一个对象都使用 alloc init, 这样可以统一编码格式
Person *p3 = [[Person alloc] init];
return ;
}
oc31--new实现的更多相关文章
- JavaScript 高级程序设计(第3版)笔记——chapter5:引用类型
Chapter5 引用类型 本章内容: l 使用对象 l 创建并操作数组 l 理解基本的JavaScript类型 l 使用基本类型和基本包装类型 l 从技术上讲,JavaScript是一门面 ...
- libev-4.20编译安装及简单使用
1.源码下载地址: http://www.csdn.net/tag/libev/download 2.库的编译与安装 解压文件,进入文件目录 编译的时候需要首先切换为管理员(root)账户,然后执行以 ...
- 【Linux】CentOS7上安装JDK 和卸载 JDK 【rpm命令的使用】
之前有过一篇在CentOS7上安装JDK的文章:http://www.cnblogs.com/sxdcgaq8080/p/7492426.html 在这里又说一次,是要使用rpm命令安装JDK的rpm ...
随机推荐
- Android FileProvider相关 Failed to find configured root that contains
问题: 使用FileProvider构造SD卡中文件uri时异常 java.lang.IllegalArgumentException: Failed to find configured root ...
- 【译】x86程序员手册15-5.2页转换
5.2 Page Translation 页转换 In the second phase of address transformation, the 80386 transforms a linea ...
- C# Task多线程
来自Eleven老师示例 private void btnTask_Click(object sender, EventArgs e) { Console.WriteLine(); Console.W ...
- UICollectionView框架总结
一.UIcollectionView介绍 1.1.简介 首先看苹果官方文档 UICollectionView Class Reference 的介绍: The UICollectionView cla ...
- 源码安装apache脚本
#!/bin/bash#By:zhaocheng#Date:2019-01-18 [ -d /media/cdrom ] || mkdir /media/cdrom[ -d /media/cdrom/ ...
- 移动端rem布局 js
// rem布局适配 (function(doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in ...
- 码书:编码与解码的战争 PDF 下载
码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...
- 一篇入门Node.js
目录 1.Node.js 简介 2.Node.js NPM 3.Node.js 模块 4.Node.js 事件 5.Node.js Buffer 6.Node.js 文件系统 7.Node.js St ...
- JavaScript基本知识----操作符,流程控制,循环,字符串方法,数组方式,补充方法
操作符 算术运算 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- BUPT2017 springtraining(16) #3 ——搜索与动态规划
题目在这里啊 A.最长上升子序列,范围很小所以写了简单的O(n^2)算法 #include <iostream> #define rep(i, j, k) for(int i = j;i ...