Objective -C Object initialization 对象初始化

1.1 Allocating Objects  分配对象

Allocation is the process by which a new object is born.

allocation 是新对象诞生的过程。

Sending the alloc message to a class causes that class to allocate a chunk of memory large enough to hold all its instance variables.

发送alloc 消息能够让class分配足够多得内存。

All your BOOLs start out as NO;

all your ints are 0; all your floats become 0.0; all your pointers are nil;

A newly allocated object isn't ready to be used right away: you need to initialize it before you can work with it.

一个刚分配的对象还不能用,你需要初始化它。

Some languages, including C++ and Java, perform object allocation and initialization in a single operation using a constructor. Objective-C splits the two operations into explicit allocation and initialization stages.

java和C++执行allocation and initialization 在一个操作里。

而Objective-C分开了两个操作。

1.2 Initializing objects 对象初始化

Initialization takes a chunk of memory and gets it ready to become a productive member of society. init methods—that is, methods that do initialization—almost always return the object they're initializing.

初始化让其成为对象的一员。init methods 也就是说总是返回要被创建的对象。

Car *car = [[Car alloc] init];

1.3 Writing initializationg methods  写初始化方法

(id) init {

 if (self = [super init])

 {

   engine = [Engine new];

   tires[0] = [Tire new];

   tires[1] = [Tire new];

   tires[2] = [Tire new];

   tires[3] = [Tire new];

}

  return (self);

} // init

The first bit of code that runs in that statement is [super init].That code lets the superclass do its initialization work.

[super init]允许父类完成初始化工作。

For classes that inherit from NSObject, calling on the superclass lets NSObject do any processing it needs to do so that objects can respond to messages and deal with retain counts.

对于任何继承自NSObject的类,初始化能够让对象相应详细和处理retain counts .

For classes that inherit from another class, this is their chance to do their own version of clean-slate initialization.

对于继承自其他类的类,它有机会初始化自身。

Remember that instance variables are found at a memory location that's a fixed distance from the hidden self parameter.

记住在实例变量发现在内存的位置,固定位置能够找到隐藏的self参数。

If a new object is returned from an init method, we need to update self so that any subsequent instance variable references affect the right places in memory.

如果一个对象返回一个init 方法,我们需要更新self 才能在任何子变量中适当的位置找到实例变量。

An init method can return nil if there's a problem initializing an object.

一个初始化方法可能返回nil 。

Keep in mind that this assignment affects the value of self only for this method. It doesn't change anything outside the method's scope.

记住这个分配只影响self 在本方法内。不会影响其他方法。

The test if (self = [super init]) won't run the body code if nil is returned from [super init].

这个测试不会运行,如果[super init ]返回为nil的话。

An init method returns the object that was just initialized. Since we assigned the return value of [super init] to self, that's what we should return.

一个正确地初始化方法返回一个初始化对象。因为我们把[super init ]赋值给self ,所以返回self 

1.4 What to Do When You're Initializing

This is the place to do your clean-slate initialization work. You assign values to instance variables and create the other objects that your object needs to do its work.

在这里,你可以做一些从头再来的工作。你分配值和创建你需要的其他对象.初始化需要做什么工作还是看你自己的需求。 

1.5 Convenience initializers 

In fact, it's important to remember that init methods are nothing special. They're just ordinary methods that follow a naming convention.

init methods没什么特殊的。他们也是普通的类。 

Many classes have convenience initializers. These are init methods that do some extra work, saving you the trouble of doing it yourself.

许多类提供简单方法。做额外的工作。

- (id) initWithFormat: (NSString *) format, ...;

这个也是初始化方法。

 

 

 

Objective -C Object initialization 对象初始化的更多相关文章

  1. prototype linkage can reduce object initialization time and memory consumption

    //对象是可变的键控集合, //"numbers, strings, booleans (true and false), null, and undefined" 不是对象的解释 ...

  2. C++中的对象初始化

    当对象在创建时获得了一个特定的值,我们说这个对象被初始化.初始化不是赋值,初始化的含义是创建变量赋予其一个初始值,而赋值的含义是把当前值擦除,而以一个新值来替代.对象初始化可以分为默认初始化.直接初始 ...

  3. C++中对象初始化

    在C++中对象要在使用前初始化,永远在使用对象之前先将它初始化. 1.对于无任何成员的内置类型,必须手工完成此事. 例如: int x=0; double d; std::cin>>d; ...

  4. Java对象初始化详解

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

  5. Java对象初始化详解(转)

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

  6. C#语法糖之第二篇: 参数默认值和命名参数 对象初始化器与集合初始化器

    今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完 ...

  7. 第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)

    一. 语法糖简介   语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方 ...

  8. jQuery对象初始化的多种传参数形式

    jQuery对象初始化的传参方式包括:1.$(DOMElement)2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常 ...

  9. {{jQuery源码分析}}jQuery对象初始化的多种传参数形式

    jQuery对象初始化的传参方式包括:1.$(DOMElement)2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常 ...

随机推荐

  1. 两个喜欢的"新"C#语法

    现在C#比较新的语法,我都十分喜欢. 比如属性可设默认值: public string Name { get; set; } = "张三"; 还有一个就是拼接字符串. 以往,通常都 ...

  2. Hackrank Equal DP

    Christy is interning at HackerRank. One day she has to distribute some chocolates to her colleagues. ...

  3. socket.io中文文档

    socket.io 中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html 服务端 io.on(‘connection’,function( ...

  4. 实践001:char 类型字段在表中的长度

    Rainy on 20170215 1.同事在 写RFC的时候遇到报错:"YTST_001" 必须为扁平结构.不能将内部表.字符# 原因是自建结构中字段定义为了string 类型. ...

  5. (MySQL里的数据)通过Sqoop Import HDFS 里 和 通过Sqoop Export HDFS 里的数据到(MySQL)(五)

    下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出 一.MySQL里的数据通过Sqoop import HDFS 它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示. ...

  6. spark安装和登陆配置

    1.下载安装包: http://www.igniterealtime.org/downloads/index.jsp 2.点击安装后打开登陆界面: 2.点击“高级”,设置相关配置: 3.点击“登陆”后 ...

  7. P4844 LJJ爱数数 数论

    思路: 化简后得到(a+b)c=ab,设g=(a,b),A=a/g,B=b/g,则g(A+B)c=ABg^2,即(A+B)c=ABg 由题目已知条件:(a,b,c)=1,即(g,c)=1,g|(A+B ...

  8. 使用Asp.net Identity 创建用户 、登录代码

    1.Identity 1中的注册.登录.注销代码 vs 2013中自带的注册用户代码: 1.首先创建一个ApplicationUser 初始化用户名. 2.使用UserManager创建一个用户,用使 ...

  9. ubuntu/linuxmint搜狗输入法无法输入中文或崩溃

    执行下列命令: cd ~/.config rm -rf SogouPY SogouPY.users sogou-qimpanel 然后重启电脑.

  10. C# 多边形面积计算公式

    最近在做地图相关面积计算显示工作,百度了很多关于多边形面积计算方面公式和代码,只能说贼费劲,最终完成了把结果展示下     原理:鞋带公式 定义:所述鞋带式或鞋带算法(也称为高斯的面积公式和测量员的式 ...