IOS学习笔记二(指定初始化方法之我见)
2014-05-29 22:27
323 查看
先看《IOS编程》一书中对指定初始化方法是如何阐述的,指定初始化方法要确保对象的每一个实例变量都处在一个有效的状态。看到这里我们不仅想到C++中的默认构造函数,但是从名字上又能看出它们并不完全相同,一个要指定(由谁指定?)另一个是默认。
下面让我们回想一下C++中什么是默认构造函数。默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。因为默认构造函数可以不带参数,所以它无法保证对象的每一个实例变量都处于有效的状态。这个才是指定初始化方法与默认构造函数的区别!有关默认构造函数的进一步思考参见http://blog.csdn.net/hankai1024/article/details/7947989。
让我们再思考一个问题,既然指定初始化方法可以保证对象的每一个实例都处在一个有效的状态,那是不是只需要一个指定初始化方法就行了呢?显然不是,首先从名字上就可以看出来,指定意味着从很多中选择一个,所以肯定会有其他初始化方法。实际上指定初始化方法的参数通常会和最重要的、最常见的实例变量相对应。其他的初始化方法为了保证对象的每一个实例变量处在有效状态,会在内部调用指定初始化方法以达到目的,这样就形成了一个初始化方法链。
关于指定初始化方法就写到这里,有不足的地方欢迎大家批评指确!转载请注明出处!
下面让我们回想一下C++中什么是默认构造函数。默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。因为默认构造函数可以不带参数,所以它无法保证对象的每一个实例变量都处于有效的状态。这个才是指定初始化方法与默认构造函数的区别!有关默认构造函数的进一步思考参见http://blog.csdn.net/hankai1024/article/details/7947989。
让我们再思考一个问题,既然指定初始化方法可以保证对象的每一个实例都处在一个有效的状态,那是不是只需要一个指定初始化方法就行了呢?显然不是,首先从名字上就可以看出来,指定意味着从很多中选择一个,所以肯定会有其他初始化方法。实际上指定初始化方法的参数通常会和最重要的、最常见的实例变量相对应。其他的初始化方法为了保证对象的每一个实例变量处在有效状态,会在内部调用指定初始化方法以达到目的,这样就形成了一个初始化方法链。
关于指定初始化方法就写到这里,有不足的地方欢迎大家批评指确!转载请注明出处!
相关文章推荐
- WPF学习笔记 - ”指定的元素已经是另一个元素的逻辑子元素。请先将其断开连接。“问题的解决方法之一
- 学习笔记------------------对Action中所有方法进行输入校验和对指定方法输入校验(手工编写代码和xml方式)
- Spring学习笔记 初始化属性为null值的方法
- 方法定制iOS学习笔记8-UITableView的定制
- IOS学习笔记56-IOS7状态栏适配方法 (一)
- IOS学习笔记—Objective C—类、属性、方法 .
- iOS学习笔记17—NSFileHandle 诸多方法理解
- iOS学习笔记24—URL传参的问题和解决方法
- IOS学习笔记之属性方法的选择
- IOS学习笔记56-IOS7状态栏适配方法一
- 『iOS学习笔记』 - 变量 属性 方法 实现
- iOS学习笔记<20> iOS中的GCD多线程模型 & ios事件的通知方法
- Spring学习笔记 关于Bean的初始化和清理-init和destroy方法
- IOS学习笔记2—Objective C—类、属性、方法
- Effective C# 学习笔记(十二) 多用成员变量初始化,少用指定赋值
- 前端攻城狮学习笔记三:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。
- IOS学习笔记2—Objective C—类、属性、方法
- IOS学习笔记之属性方法的选择
- 【Rails学习笔记】在控制台、服务器和迁移命令中指定其他环境的方法
- 方法定制iOS学习笔记8-UITableView的定制