1.#import可以保证头文件只被包含一次,无论此命令在该文件中出现了多少次。
2.Foundation框架处理的是用户界面之下的那些层(Layer)的特性,比如数据结构和通信机制。
3.@符号意味着引号内的字符串应作为Cocoa的NSString元素来处理。
4.记住,不要将BOOL值和YES直接进行比较。
5.间接是OOP的核心,OOP真正的革命性在于它使用间接来调用代码,不是直接调用某个函数,而是间接调用。
6.过程式编程建立在函数之上,数据为函数服务,而面向对象编程则以程序的数据为中心,函数为数据服务。在OOP中,不再重点关注程序中的函数,而是专注于数据。
7.通知对象执行某种操作称为发送消息,[shape draw]可以理解成”向shape发送draw消息“。
8.有关术语:
⓵.类(class)是一种表示对象类型的结构体;
⓶.对象(object)是一种包含值和指向其类的隐藏指针的结构体;
⓷.实例(instance)是“对象”的另一种称呼;
⓸.消息(message)是对象可以执行的操作,用于通知对象去做什么;
⓹.方法(method)是为响应消息而运行的代码;
⓺.方法调度(method dispatcher)是Objective-C使用的一种机制,用于推测执行什么方法以响应某个特定的消息;
⓻.接口(interface)是类为对象提供的特性描述;
⓼.实现(implementation)是使接口能够正常工作的代码。
9.应用程序对象:UIApplication类的实例;应用程序委托:AppDelegate类的实例;串联图:能直观展示应用程序的用户界面、显示内容屏幕以及它们之间的转换。
10.应用程序开发过程:
⓵.定义概念(源头);
⓶.设计用户界面(关键);
⓷.定义交互(事件驱动);
⓸.实现行为(Objective-C);
1).对象是应用程序的基石;
2).类是对象的蓝图;
3).对象通过消息通信;
4).协议定义消息发送契约;
5).整合数据(数据模型)。
11.视图控制器扮演着多种角色。它们负责协调应用程序的数据模型与显示该数据的视图之间的信息传输,管理应用程序的内容视图的生命周期,并处理设备旋转时方向的更改。但其最主要的作用可能是响应用户输入。
12.通过让视图控制器文件与串联图中的视图进行通信,可以定义应用程序中的交互方式。方法是通过Action与Outlet来定义串联图与源代码文件之间的连接 (IBAction,IBOutlet)。
13.导航控制器(UINavigationController) 导航栈是一组后进先出的自定视图控制器对象。
14.过渡表示两个视图控制器之间切换:源视图控制器和目的视图控制器。(Push,Model,Custom,Unwind)除了过渡之外,还可以通过关系来连接场景。
15.在自定类中使用现用框架类,往往比重写更省时省力。
16.设计模式(MVC)
模型(M)<——>控制器(C)<——>视图(V)
通过响应用户的操作并使用内容填充视图,控制器充当了模型和视图二者之间通信的通道。
17.目标-操作是定义交互以及应用程序各部分之间发送信息的强大机制。
18.委托是一种简单而强大的模式。常见的设计是将委托作为一种手段,允许子视图控制器将某些值(通常为用户输入的值)传达到父视图控制器。
19.类工厂方法是一种用于分配、初始化实例并返回一个它自己的实例的类方法。Objective-C框架的某些类定义了类工厂方法,这些方法与这些类的初始化程序相对应。
20.添加进集的任何对象的生命周期都将不短于集。因为集类会使用强引用来跟踪其内容。集对象:NSArray(数组) NSSet(集合) NSDictionnary(字典) (可变性在中间加Mutable)。
21.数组中出现nil会被解析为项目列表的末尾。
22.集合中即使你多次尝试添加对象,集合也只会储存对单个对象的一次引用。
23.处理Foundation框架,值对象(字符串、数字),集对象(NSArray,NSSet,NSDictionary),使用NSNull表示nil。
24.方法名称前面的减号(-)指示它是一个实例方法,可以用该类的对象调用。减号将它与类方法区分开来,类方法用加号(+)来表示。类方法可通过类本身来调用。类方法的一个常见示例是类工厂方法。
25.通过名称引用带一个参数的方法时,冒号将作为方法名称的一部分。
26.多个参数的写法:(中缀表达式)
(方法的数据类型)函数名:(参数1数据类型)参数1的数值的名字 参数2的名字:(参数2的数据类型)参数2值的名字.......
27.Objective-C中所有的函数均是具有多态特性的,都可在运行时动态执行调用,我们需要一种方式对于所有的同名函数,在不同的对象可以动态执行,这时候Objective-C便选择了中缀表达方式。
28.传递隐藏的参数是间接操作的又一个示例。
29.oop技术:间接(参数、变量、文件、类、对象、消息、方法、self)——>继承——>复合(对象引用其他对象)。
30.使用UIKit框架来设计应用程序的用户界面,并使用Foundation框架将常见数据结构和行为归并到代码。
31.iOS技术:(框架)
用户界面:UIKit、Core Graphics、Core Animation
游戏:Game Kit、Sprite Kit、OpenGL ES、Game Controller
数据:Core Data、Foundation
Media:(音频和视频)、AV Foundation
32.Objective-C不支持多继承,但可以通过类别(category)和协议(protocol)来达到多继承的效果。
33.继承,这种移植和优化代码的方式称为重构(refactoring),这在OOP中是一个非常流行的主题。
34.使用更具体种类的对象来代替一般类型,这种能力被称为多态性(polymorphism)。
35.每个方法调用都获得了一个名为self的隐藏参数,它是一个指向接收消息的对象的指针。这些方法通过self参数来寻找它们需要用到的实例变量。
36.重写方法时,调用超类方法总是一个明智之举,这样可以实现更多的功能。调用继承的方法可以确保获得方法实现的所有特性。
37.getter方法则是以其返回的属性名称命名,不以get作前缀,get这个词在Cocoa中有着特殊的含义,会将你传递的参数作为指针来返回数值。
38.在Objective-C中所有对象之间的交互都是通过指针实现的。
39.带尖括号的语句用于导入系统头文件,而带引号的语句则说明导入的是项目本地的头文件。
40.导入头文件使头文件和源文件之间建立了一种紧密的依赖关系。如果头文件有任何变化,那么所有依赖它的文件都得重新编译。