Objective-C构造方法
Objective-C构造方法
构造方法:用来初始化的方法
创建对象的原理
之前我们创建对象的方式一直是使用[Xxx new]
但是使用 new 创建的对象,都是给我们默认做了初始化的。
有的时候,我们需要按照我们自己的需求进行初始化,那么怎么做呢首先了解一下,我们使用new 创建对象的时候,都做了什么事情。
创建对象的过程
分配存储空间(+ alloc)
调用类方法 alloc 来给对象分配一块存储空间。
初始化(- init)
调用成员方法 init 来给对象初始化。
也就是说:
之前我们通过 [Xxx new] 的方式来创建对象
其实就是等于做了 [[Xxx alloc] init] 这样的操作但是:
系统默认的init都是给我们做的默认的初始化
那么:
如果我想自己做初始化
就需要重写init方法(构造方法)
重写 init 构造方法
重写init构造方法的几个要素
- 在.m文件重写 -init 方法
- 必须先调用父类的 -init 方法,先初始化父类里的一些成员对象和其他属性
- 父类初始化成功,才有必要重写初始化内容
- 返回初始化完成的对象
例
#import "People.h" @implementation People - (id)init
{
// 首先初始化父类里的成员变量和一些属性
if(self = [super init])
{
// 父类初始化成功以后,自定义初始化内容
_age = 1;
}
// 返回初始化成功后的对象
return self;
} @end测试
#import <Foundation/Foundation.h> #import "People.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
People *p = [People new];
NSLog(@"%d", p.age);
}
return 0;
}结果
创建对象,就将年龄初始化为1
Objective-C构造方法的更多相关文章
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- iOS开发核心语言Objective C —— 全部知识点总结
本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...
- 那些年我们学过的构造函数(构造方法,C#)
构造函数也称构造方法,在面向对象中称为构造方法,在面向过程中称为构造函数;C#是面向对象的语言,所以以下都称为构造方法, OK,下面我们先看一下什么是构造函数 class Dog { //创建一个狗类 ...
- 匿名对象 构造方法 重载 构造代码块 this 关键字
一.匿名对象 1.匿名对象 :没有名字对象 2.匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值,无法获取属性值. 2.匿名对象永远都不可能事一个对象. 3.匿名对象的好处 : 书写简单. ...
- java中构造方法的特殊性
构造方法名与类名相同 构造方法没有返回值,也不能写void 构造方法的主要作用是完成对对象的初始化工作 构造方法一般不由编程人员显示调用,而是由new来调用 在创建一个类的对象的同时,系统会自动调用该 ...
- Objective C中的ARC的修饰符的使用---- 学习笔记九
#import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...
- java构造方法的作用以及简单java类
public class TestDemo{ public static void main(String args[]){ Emp emp1 =new Emp(001,"tom" ...
- Java---类加载机制,构造方法,静态变量,(静态)代码块,父类,变量加载顺序
直接上代码: 代码1: public class ConstroctTest { private static ConstroctTest test = new ConstroctTest(); // ...
- Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法
NSString *str1 = @"字符串1"; NSString *str2 = @"字符串2"; //在同样条件下,Objective的字符串拼接 往往只 ...
- php构造方法与析构方法
1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] f ...
随机推荐
- 使用javaMail实现简单邮件发送
一.首先你要用来发送邮件的qq邮箱需要开通pop3/smtp服务,这个可以百度一下就知道了 二.导入所需要的jar包,我使用的是maven添加依赖 <dependency> <gro ...
- socket编程实例
TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用. ...
- C#之Message(转)
一.消息概述 Windows下应用程序的执行是通过消息驱动的.消息是整个应用程序的工作引擎,我们需要理解掌握我们使用的编程语言是如何封装消息的原理. 什么是消息(Message) 消息就是通知和命令. ...
- JavaScript 图
TypeScript方式实现源码 // 图的遍历算法 // 算 法 数据结构 描 述 // 深度优先搜索 栈 通过将顶点存入栈中,顶点是沿着路径被探索的,存在新的相 // 邻顶点就去访问 // 广度优 ...
- opencv2.4.9卸载安装
1.安装opencv2.4.9过程中遇到的问题. 1.使用 sudo apt-get install libopencv-dev 安装OpenCV 2.4.9 发现版本为2.4.8,故卸载重装. 查看 ...
- ueditor图片无法左右对齐的解决
找到ueditor的配置文件ueditor.config.js,里面搜索 whiteList 然后在下面找到img,在里面添加 'style'. 添加后如下: img : [ 'src', 'alt' ...
- codefroces 946F Fibonacci String Subsequences
Description定义$F(x)$为$F(x−1)$与$F(x−2)$的连接(其中$F(0)="0"$,$F(1)="1"$)给出一个长度为$n$的$01$ ...
- bzoj 5290: [Hnoi2018]道路
Description Solution PJDP毁青春 注意到性质:到根的道路不超过 \(40\) 条 所以我们只关系一个点上面的道路的情况就行了 设 \(f[x][i][j]\) 表示一个点 \( ...
- [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼
来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...
- 使用jquery.qrcode.js生成二维码
通常生成二维码的方式有两种:第一种是java代码的形式,第二种是通过Js方式. 在这里我做个记录,用js生成二维码,可以在官网下载源码:http://jeromeetienne.github.io/j ...