【读书笔记】iOS-对象初始化

一,分配对象。

分配是一个样的对象诞生的过程。最美好的时刻,是从操作系统获得一块内存并将其指定为存放对象的实例变量的位置。向某个类发送alloc消息的结果,就是为该类分配一块足够大的内存,以存放该内的全部实例变量。同时,alloc方法还顺便将这块内存区域全部初始化为0.由于未初始化内存而引起的各种各样的随机bug曾经折磨着许多语言,而alloc方法将分配的内存初始化为0,所有的float类型变量被初始化为0.0,所有的指针被初始化为nil,所有的基地都属于我们了。

二,初始化对象。

初始化从操作系统取得一块内存,准备用于存储对象,init方法(即执行初始化操作的方法)几乎总是返回它们正在初始化的对象。

三,小结。

在Cocoa中,分配和初始化是两个分离的操作:来自NSObject的类方法alloc为对象分配一块内存区域并将其清零,实例方法init用于获得一个对象并使其运行。

参考资料:《Objective-C基础教程》

时间: 2024-12-25 16:22:41

【读书笔记】iOS-对象初始化的相关文章

JavaScript语言精粹读书笔记- JavaScript对象

JavaScript 对象 除了数字.字符串.布尔值.null.undefined(都不可变)这5种简单类型,其他都是对象. JavaScript中的对象是可变的键控集合(keyed collections). 对象是属性的容器,其中每个属性都拥有名字和值. JavaScript中的对象是无类别的(class-free)的.它对新属性的名字和值没有约束. JavaScript包括一个原型链特性,允许对象继承另一对象的属性. 对象的检索: stooge[“first-name”]或者stooge.

读书笔记——IOS之Web开发

Web开发 读书笔记:http://www.mincoder.com/article/2576.shtml 主要的请求方法 Get请求:数据以明文在URL中,数据量小 Post请求:数据大小没有限制 HEAD请求:请求头信息 程序的实现需要借助几个对象: NSURLRequest:建立了一个请求,可以指定缓存策略.超时时间.和NSURLRequest对应的还有一个NSMutableURLRequest,如果请求定义为NSMutableURLRequest则可以指定请求方法(GET或POST)等信

《Javascript高级程序设计》读书笔记之对象创建

<javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决对象识别问题,所有对象都仅是Object的实例 function createPerson(name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name)

【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)

前言中的内容: 1.什么是C++对象模型? 1.语言中直接支持面向对象程序设计的部分 2. 对于各种支持的底层实现机制 2. C++ class的完整virtual functions在编译时期就固定下来了,程序员没有办法再执行器动态增加或取代其中一个.这使得虚拟调用操作得以快速地派送结果,付出的成本则是执行期的弹性. 3. 全局对象在main()函数之前便完成初始化. 第一章 关于对象 1. 在C++中,有两种class data members:static 和 nonstatic,以及三种

[读书笔记]iOS与OS X多线程和内存管理 [Blocks部分-2]

2.3 Blocks的实现 2.3.1 Block的实质 通过命令"clang -rewrite-objc 文件名"能够将含有Block语法的源代码转换为C++源代码. 含有Block的源代码如下: #include <stdio.h>//不导入库文件无法运行 int main() { void(^testBlock)(void)=^{ printf("i am testBlock"); }; testBlock(); } 转换后的代码有五百行左右,这里

[读书笔记]iOS与OS X多线程和内存管理 [Blocks部分-3]

2.3.2 截获自动变量 通过转换后的源码可以发现,Block语法中使用的自动变量被作为成员变量追加到__main_block_impl_0结构体中,Block中没有使用的自动变量不会被追加,所以Block的变量截获只针对Block使用的自动变量. 源码: #include <stdio.h>//不导入库文件无法运行 int main() { int val1=0; int val2=10; void(^testBlock)(void)=^{ printf("i am testBlo

[读书笔记]iOS与OS X多线程和内存管理 [GCD部分]

3.2 GCD的API 苹果对GCD的说明:开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中. "Dispatch Queue"是执行处理的等待队列.通过dispatch_async函数等API,在Block语法中记述想执行的处理并追加到Dispatch Queue中,Dispatch Queue按照追加的顺序,执行处理. Dispatch Queue分为两种: 种类 说明 Serial Dispatch Queue 等待现在执行中处理结束(顺序执行) Co

[读书笔记] java类初始化

以下内容来自周志明的<深入理解java虚拟机>: 类初始化阶段是类加载过程的最后一步,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制. 到了初始化阶段,才真正开始执行类中定义的Java程序代码(或者说是字节码). 在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量和其他资源,或者可以从另外一个角度来表达:初始化阶段是执行类构造器<clinit>()方法的过程.

【读书笔记】对象创建摘录

1 //工厂模式 2 function createPerson(name, age, job){ 3 var o = new Object(); 4 o.name = name; 5 o.age = age; 6 o.job = job; 7 o.sayName = function(){ 8 alert(this.name); 9 } 10 return o; 11 } 12 function createPerson(name, age, job){ 13 return { 14 name

[读书笔记]iOS与OS X多线程和内存管理 [Blocks部分-4]

2.3.5 __block变量存储域 Block变量从栈复制到堆时对__block变量产生的影响 __block变量存储域 影响 栈 从栈复制到堆并被Block持有 堆 被Block持有 在多个Block中使用__block变量时,第一个Block从栈复制到堆时,__block变量也一并从栈复制到堆.在之后的Block从栈复制到堆时,__block变量被Block持有,__block变量引用计数增加.之前__block变量结构中的__forwarding能够做到"不管__block变量在栈上还是