objective-c:分配和初始化对象
2012-12-21 17:27
344 查看
和C#类似OC中也有一个根类型,也就是NSObject,它包含一个alloc方法和一个init方法。顾名思义,alloc用于申请内存,创建一个对象的内部结构,并且将实例变量赋值为0。
init方法赋值将变量的值赋值为默认值(似乎和0不一样),然后执行一些其它的任务。
alloc就像进入了一辆车里,而init是打火发动汽车。
正常写法:
MyObject *someObject = [[MyObject alloc] init];
[someObject doSomething];
另一种是:
MyObject *someObject = [MyObject new];
其实这样写程序照样执行
MyObject *someObject = [MyObject alloc];
[someObject doSomething];
为嘛呢?因为在NSObject中的定义的init方法并没有初始化任何东西,它只是返回了自身。在类被使用之前,需要执行一些任务才能使用,而init只不过是这些任务的占位符罢了。NSObject并没有初始化任何东西,但是[[MyObject alloc] init]这种写法仍旧是推荐的写法,初始化方法返回的是id类型的对象,因此init方法和alloc方法返回的未必是一个对象。这种技术( [[MyObject alloc] init])叫做two-stage creation。
init方法赋值将变量的值赋值为默认值(似乎和0不一样),然后执行一些其它的任务。
alloc就像进入了一辆车里,而init是打火发动汽车。
正常写法:
MyObject *someObject = [[MyObject alloc] init];
[someObject doSomething];
另一种是:
MyObject *someObject = [MyObject new];
其实这样写程序照样执行
MyObject *someObject = [MyObject alloc];
[someObject doSomething];
为嘛呢?因为在NSObject中的定义的init方法并没有初始化任何东西,它只是返回了自身。在类被使用之前,需要执行一些任务才能使用,而init只不过是这些任务的占位符罢了。NSObject并没有初始化任何东西,但是[[MyObject alloc] init]这种写法仍旧是推荐的写法,初始化方法返回的是id类型的对象,因此init方法和alloc方法返回的未必是一个对象。这种技术( [[MyObject alloc] init])叫做two-stage creation。
相关文章推荐
- Objective-C 学习笔记 - part 3 - 为对象分配内存并初始化
- Objective-C 编程语言(3) 定义类---分配并初始化对象,init方法的返回值,初始化方法的实现
- Objective-C 编程语言(3) 定义类---分配并初始化对象,init方法的返回值,初始化方法的实现
- Objective-C 编程语言(3) 定义类---把对象的分配和初始化进行合并
- Objective-C 2.0 with Cocoa Foundation---对象的初始化以及实例变量的作用域(2)
- iOS学习笔记-Objective-C-继承和实例化、对象初始化
- Objective -C Object initialization 对象初始化
- Objective-C 日记⑧ 对象初始化
- Objective-C基础学习笔记——对象初始化
- 浅谈Objective-C对象初始化的三类程序猿
- Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
- Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
- Objective-C 2.0 对象的初始化以及实例变量的作用域
- Objective-C对象初始化 、 实例方法和参数 、 类方法 、 工厂方法 、 单例模式
- Cocoa 框架 For iOS(二)对象的分配初始化、内省、单
- Objective-C对象的申请空间与初始化
- Java基础-对象的内存分配与初始化
- 《Objective-C基础教程》第10章 对象初始化
- Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
- 浅谈 Objective-C 下对象的初始化