您的位置:首页 > 移动开发 > Objective-C

Objective-C设计模式(MVC)的实现,以及协议与委托的运用

2011-08-10 09:33 639 查看
  在iPhone的开发过程中经常要用到界面,而苹果公司为其设计了很好的管理思路,就是采用常用的MVC模式,在iPhone中,所有的图形控件都是继承于UIView,就是"V".UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现.对于不同的UIView,都有相应的UIViewController对应MVC中的"C".对于"M",也就是数据模型,那就留给用户自己发挥了.

  Objective-C只支持单继承,和java很像,单可以实现多个协议(Protocol).

首先,定义个View

1.@interfaceMyUIView:UIView{
2.
3.
4.  //定义一些控件
5.
6.  id<MyUIViewDelegate>delegate;//这个定义会在后面的解释,它是一个协议,用来实现委托。
7.
8.}
9.
10.//定义一些控件设置方法
11.@propertyid<MyUIViewDelegate>delegate;//定义一个属性,可以用来进行getset操作
12.
13.@end


然后定义一个Protocol,按照Cocoa的习惯,一般它以delegate结尾,熟悉C#的同学应该知道它的意义.其实不论是接口,委托,还是回调函数,本质上都做了一件事情.就是定义了一个操作契约,然后由用户自己来实现它的具体内容.

@protocolMyUIViewDelegate
//这里只需要声明方法
-(void)func1
-(int)func2:(int)arg

@end



完成以上两步之后就需要设计自己的UIViewController了.一般简单的做法,可以让这个Controller来实现上面定义的MyUIViewDelegate.在Cocoa框架中,很多控件和它的Controller都是采用的这种方式.

1.@interfaceMyUIViewController:UIViewController<MyUIViewDelegate>
2.{
3.//成员变量
4.}
5.
6.//成员方法,类方法,属性
7.
8.@end


定义好了,现在,你只要在MyUIViewController中声明MyUIView成员变量,并把自己作为委托对象传给MyUIView,就可以成为MyUIView的代理,这样,当MyUIView某事件发生时就可以调用MyUIViewController中实现的委托方法了.

  说的很是浅显,具体实现请自己完成,自己练习.

byMAC-z
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: