总的来说,接收到一个事件的原因可以分为4类。这种分类并不是正式的,而是我划分的。通常,一个事件属于哪个类别并不是特别明确的;一个事件可能属于两个类别。但这些事件类别对于搞清楚Cocoa与你的代码交互的方式与原因还是颇具价值的。
用户事件
用户做了某个交互式的动作,事件就会直接被触发。显而易见的就是当用户轻拍、滑动屏幕或是在键盘上输入时所获得的事件。
生命周期事件
这些事件用于通知你应用生命周期的某个阶段到来了,比如,应用启动或即将进入到后台;还可以通知你应用组件生命周期中的某个阶段到来了,比如,UIViewController的视图刚刚加载完毕或即将从界面中被移除。
功能性事件
Cocoa将要做某事,如果你想要提供额外的功能,那么Cocoa就会将控制权交给你。我可以将诸如UIView的drawRect:(让视图绘制自身)、UILabel的drawTextInRect:(修改标签的外观)归于此类,第10章曾对其做过介绍。
查询事件
Cocoa会向你提问;其行为取决于你的答案。比如,数据出现在表格(UITableView)中的方式就是当Cocoa需要为表格的行添加单元格时,它会向你索要该单元格。