详解Mac OS Cocoa基础框架

Cocoa基础框架是本文要介绍的主要内容,Cocoa/cocoa touch框架Mac/IOS上目前最流行的框架。优点我就不多说了,主要讲一下从Linux命令行程序员转变过来的程序员要如何入门。

1、以前在linux命令行下写代码的时候,只需要知道几个系统调用,libc的库函数,就可以自己随心所欲的写代码来完成需要的功能。但在cocoa下就不行,他们是自包含,能够完整运行的代码,咱们一行代码都不加,他们也能正常运行。

也就说在cocoa下,程序的主框架是定死了的,不能由程序员修改,程序员需要做的,就是在cocoa指定的地方加上“hook”,只有在这些hook上加上我们自己的代码,这样cocoa框架才能调用我们自己的代码,来实现各种各样的功能。cocoa编程实际是一个在为cocoa框架添砖加瓦的过程。

2、在图形界面下编程,引入了新的概念,叫design pattern,名字很抽象,但具体点来说,就是为了解决某种问题,而创造的一种编程方式。比如cocoa下很重要的有MVC,delegate, target-action等模式,这些模式都是为了解决某类编程问题,比如MVC这种设计模式,是为了解决图形化编程的时候,让class的设计更清晰,delegate是为了方便扩充一种控制类(controller class)的一种设计模式。

这样说可能难以理解,如果熟悉了cocoa的教程再回过头来看,就会发现理解各种design pattern是理解cocoa的关键,因为这些design patter解释了在哪里添加自己的代码以及为什么要再那里添加代码。

3、在cocoa框架下,程序的驱动是各种消息,也就是程序的唯一目的就是为了响应处理系统或用户对界面的操作产生的消息。消息传递的路径可以参考apple的cocoa fundamentals guide。那各种class是怎么相应这些消息的呢(也就是我们的hook怎么加到这个框架中呢)?主要有以下几种方式

通过sub class的方式扩展view控件,重载或添加新的消息响应函数

通过delegate扩充view控件,因为view获得消息以后,都会把消息还递给自己的delegate notification centers等

4、开发mac/ios程序一般使用xcode+interface builder来做的,这两个程序是什么关系呢?简单的说,xcode是源代码编辑环境,而interface builder是运行时的编辑器。为什么这么说呢,回忆一下咱们编程都时在干什么?定义对象模版(声明class)+生成对象+处理对象之间的关系。

这些动作在xcode环境中都是可以通过敲代码的方式完成的,那么为什么还需要用interface builder呢?interface builder实际上时用来完成后两项任务的,也就是生成对象+处理对象之间的关系。interface build处理这两项任务有天然的优势,就是可以用图形化拖拽的方式来完成。所以用它来创建程序的界面涉及到的对象直观又方便。

相关推荐