Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C作为开发语言。固然,在代码中也能够嵌入C和C++的语句。初识Objective-C时会以为它的语法很奇怪,但本质上和其余面向对象语言都差很少。具体语法你们能够参考相关文档。html
在Cocoa框架中:编程
全部的控件、窗口等都继承自 UIView,对应MVC中的 V。UIView及其子类主要负责UI的实现,而UIView所产生的事件均可以采用委托的方式,交给UIViewController实现。对于不一样的 UIView,都有相应的UIViewController 对应MVC中的C。好比在iPhone OS上经常使用的UITableView,它所对应的Controller就是UITableViewController。至于MVC中的M,那须要根据用 户本身的需求来实现了。架构
下面看一下一个自定义UIView的架构是怎么样的。这以前要认识一下Objective-C中的几个重要的关键字。框架
@interface 定义一个类,这个很容易和Java中的interface混淆。函数
@protocol 定义一个协议,我跟喜欢把它理解成一个接口,至关于Java中的interface。学习
Objective-C只支持单继承,但能够实现多个协议(接口),语法以下:spa
有了以上的知识后,咱们就能够来定义本身的UIView了。设计
首先是定义一个UIView的子类。htm
而后定义一个Protocol,按照Cocoa的习惯,通常它以delegate结尾,熟悉C#的同窗应该知道它的意义。其实不管是接口,委托,仍是回调函数,本质上都作了一件事情。就是定义了一个操做契约,而后由用户本身来实现它的具体内容。对象
完成以上两步以后就须要设计本身的UIViewController了。通常简单的作法,可让这个Controller来实现上面定义的MyUIViewDelegate。在Cocoa框架中,不少控件和它的Controller都是采用的这种方式。
定义都完成了,到这里其实还看不出这三者是怎么联系起来的。那接下来就要看看,MyUIView和MyUIViewController的具体实现了。
首先是MyUIView的实现代码,假设在MyUIView在发生某个事件后会调用doSometing方法。
上面的代码中 nil 至关于 Java中的 null,这里的意思就很明显了,若是delegate委托对象不为空,则调用相应的方法,可是这个委托对象的方法在哪里实现呢。能够看一下 MyUIViewController的定义,它实现了MyUIViewDelegate。因此这个方法固然是由它来实现。代码以下
这么一来整个,整个代码的线路就明白了。
1.MyUIViewController初始化
2.MyUIViewController初始化时初始化MyUIView,而且将本身做为委托对象赋值给MyUIView
3.MyUIView发生事件,调用(回调)委托对象的方法,其实就是调用MyUIViewController的方法。
以上只是对Cocoa的编程模型进行了简单的分析,和你们交流一下。花了1个月时间学习Objective-C和Cocoa框架,感受并不难学,熟 悉面向对象的同窗应该能比较快上手。固然,它的语法是比较奇怪,我到如今有时还会写错,但习惯成天然嘛。对Mac OS和iPhone OS平台感兴趣的同窗能够去研究一下,挺有意思的。
相关文章:
http://qwjcool.iteye.com/blog/265251
http://www.cnblogs.com/shanyou/archive/2011/02/02/1948899.html