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
然后定义一个Protocol,按照Cocoa的习惯,一般它以delegate结尾,熟悉C#的同学应该知道它的意义.其实不论是接口,委托,还是回调函数,本质上都做了一件事情.就是定义了一个操作契约,然后由用户自己来实现它的具体内容.
完成以上两步之后就需要设计自己的UIViewController了.一般简单的做法,可以让这个Controller来实现上面定义的MyUIViewDelegate.在Cocoa框架中,很多控件和它的Controller都是采用的这种方式.
定义好了,现在,你只要在MyUIViewController中声明MyUIView成员变量,并把自己作为委托对象传给MyUIView,就可以成为MyUIView的代理,这样,当MyUIView某事件发生时就可以调用MyUIViewController中实现的委托方法了.
说的很是浅显,具体实现请自己完成,自己练习.
byMAC-z
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
相关文章推荐
- 用例子说明MVC 设计模式(以Objective-C 实现)
- 用例子说明MVC 设计模式(以Objective-C 实现)
- 用例子说明MVC 设计模式(以Objective-C 实现)
- 设计模式 MVC 委托 协议
- Objective-C中的协议和代理(委托)设计模式
- 用例子说明MVC 设计模式(以Objective-C 实现)
- iOS设计模式之自己设计与实现委托与协议
- Objective-C——协议(Protocol)详解与代理(委托)设计模式
- 实现范例的Observer设计模式 事件 委托
- 软件架构/ 框架 /设计/模式以及MVC是设计模式还是架构模式
- Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
- C#设计模式 排序算法与委托结合运用
- Objective-C 协议 简介 +委托的实现
- 单例设计模式双判空实现以及使用volatile修饰instance讲解
- 为什么MVC不是一种设计模式? ---比较Backbone和Ext4.x在MVC实现上的差异
- 设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)
- 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)
- c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
- 设计模式-代理模式与适配器模式实现代码重用以及策略模式的使用