未了解知识点: 自动化测试 程序生命周期
import不会引起交叉编译的问题。 因为在Objective-C中会存在C/C++和Object-C混编的问题,如果用#include引入头文件,会导致交叉编译。
import<> 导入系统头文件,
import"" 导入自己的头文件
include是C/C++中的头文件引入方式
#import和@class的区别 @classA来引入一个类A时, 编译器只知道有这么一个类A,
#import“classA.h”来引入一个类A,会包含这个类的所有信息,包括实体变量和方法,
两个文件互相包含;
如果使用#import来相互包含,那么就会出现编译错误,
如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现,只需要在。m包含需要的文件即可
单元测试:又称模块测试( Unit Testing),是针对【程序模块】来进行正确性检验的测试工作。 程序模块:软件设计的最小单位。对于面向对象编程,最小单元就是方法 所以oc的单元测试是针对单个函数进行正确性检验的工作。
XCTest都是官方的测试框架, GHUnit和OCMock都是第三方的测试框架,
封装:即一个类向外部仅暴漏公有的方法和属性。无需外界知道的方法和属性会设为私有,目的是面对接口编程
继承:即对父类的扩展,
多态:不同对象以自己的方式响应相同的消息的能力叫做多态。
1.通知:NSNotificationCenter
在ios中由消息中心进行消息接收和消息广播,是一种一对多的消息传递方式
2.代理
是一种通用的设计模式,用于代理者和被代理者协调解决问题。在ios中有代理对象,委托者,协议三部分组成,让被代理者在合适的时候通过协议调用代理者实现的方法。
3.block
ios中的一种回调方法,可以将回调处理代码直接写到block代码块中,好处是逻辑清晰,代码整齐。
4.target action
如xib中button和viewcontroller的交互方式,在视图控制器中添加xib文件的button的action就可以事件button的事件传递,
5.kvo
是NSObject的分类——NSKeyValueObserving,通过监听对象属性值的变化,当属性变化时回调kvo的回调方法
控件是对数据和方法的封装,控件可以有自己的方法和属性。
属性是控件数据的简单访问者,方法是控件的一些简单可用的功能
Typeof:元运算,放在运算数之前,返回一个字符串,说明运算数的类型。跟__typeOf作用相同
? Up:默认状态,即通常的状态,这时的鼠标是不在按钮范围之内的。 ? Over:鼠标滑过按钮时的状态。 ? Down:按钮被点击后的状态,通常它是出现在目标网页中的。 ? Over While Down:鼠标滑过处于Down状态下按钮的时候按钮的状态,通常极少应用。