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


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

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

    首先,定义个View

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

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

    1 @protocol MyUIViewDelegate  
    2 //这里只需要声明方法
    3 - (void)func1
    4 - (int)func2:(int)arg
    5
    6 @end
     

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

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

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

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

    by MAC-z

  • 相关阅读:
    HTML学习笔记
    JSP与Servlet的跳转及得到路径方法整理(转)
    Servlet 学习笔记6:Cookie
    工作=娱乐=爱[龙]
    幸福的方法[龙]
    10张海报,激励人生[龙]
    8个方法让你安然度过低效率的日子[龙]
    使用空余时间的20个有效途径
    人生三点钟
    2013计划
  • 原文地址:https://www.cnblogs.com/ydhliphonedev/p/2133262.html
Copyright © 2020-2023  润新知