Chinaunix首页 | 论坛 | 博客
  • 博客访问: 358049
  • 博文数量: 78
  • 博客积分: 3380
  • 博客等级: 中校
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-16 19:39
文章分类

全部博文(78)

文章存档

2011年(31)

2010年(47)

分类: BSD

2011-10-13 16:18:59


一、说明
  1.协议声明了可以被任何类实现的方法
  2.协议不是类,它是定义了一个其他对象可以实现的接口
  3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议。
  4.协议经常用来实现委托对象。一个委托对象是一种用来协同或者代表其他对象的特殊对象。
  5:委托,就是调用自己定义方法,别的类来实现。
  6.新特性说明
    @optional预编译指令:表示可以选择实现的方法
    @required预编译指令:表示必须强制实现的方法
   
利用protocol可以在Objective-C中達成類似多重繼承的效果。

二、委托
系统定义delegate
1.在代理类中实现接口(例如一般代理类选为view controller),声明如下,@interface  ViewAController:UIViewController ,并且UITextFieldDelegate实现中的接口。
2.在代理类中(例如view controller)声明UITextField *textField;并设置textField.delegate = self;
自定义delegate
1.声明协议中的接口,但不实现,例如@protocol  DelegateA。
2.在代理类中实现接口(例如一般代理类选为view controller),声明如下,@interface  ViewAController:UIViewController ,并且实现DelegateA中的接口。
3.在需要使用这个protocol中方法的类中,声明这个protocol的引用,例如id delegate,在代理类中DelegateA 将delegate变量指向DelegateA的对象,例如delegate = self;

自定义delegate和系统定义delegate的区别
1.系统定义的delegate不需要声明一个它的引用,也就是它的代理函数是由系统来调度的,例如点击一下UITextField控件,系统会自动调用到textFieldShouldBeginEditing,而自定义的delegate需要用户去调用,用[delegate functionA]。
自定义delegate和系统定义delegate的相同点
1.需要在代理类中声明并实现接口。
2.需要设置delegate,通常在代理的类中设置为delegate = self;可见delegate就是一个函数指针。
自定义delegate的用途
example 1:在不同的两个view之间传值(准确地说,应该是两个view controller之间)
example 2:自定义控件。
阅读(1092) | 评论(0) | 转发(0) |
0

上一篇:App获取文件

下一篇:objectc 单例模式

给主人留下些什么吧!~~