phone開發中,自定義協議有什么用?
iphone開發中,自定義協議
自定義協議語法如下:
@protocol 協議名稱
方法之聲明
@end
Objective-C2.0中協議的新特性:(1)@optional預編譯指令:表示可以選擇實現的方法(2)@required預編譯指令:表示必須強制實現的方法。
例如:
@protocol FrameworkDelegate
@optional //可選的(正式協議) 有這個做標志
-(void)didReceiveCM:(Framework*)framework ChatMessage:(ChatMessage*)cm;
-(void)QUserArrived:(Framework*)framework AddressBook:(NSMutableArray*)ab;
//如果@optional 放在此處,表示上面2個方法內部必須實現,下面2個方法可選
-(void)AllUserArrived:(Framework*)framework AddressBook:(NSMutableArray*)ab;
-(void)ConversationListChanged:(Framework*)framework ConversationList:(NSMutableArray*)cl;
@end
協議(Protocol)的用法和代碼例子
聲明協議 ? ? ?采用協議 ? ? 實現協議
協議,是通過網絡,計算機使用者進行通訊后,互相進行約定規定的集合。兩個類進行通訊,用協議就比較方便。
一、說明
1.協議聲明了可以被任何類實現的方法
2.協議不是類,它是定義了一個其他對象可以實現的接口
3.如果在某個類中實現了協議中的某個方法,也就是這個類實現了那個協議。
4.協議經常用來實現委托對象。一個委托對象是一種用來協同或者代表其他對象的特殊對象。
5:委托,就是調用自己定義方法,別的類來實現。
6.新特性說明
@optional預編譯指令:表示可以選擇實現的方法
@required預編譯指令:表示必須強制實現的方法
二、定義(自定義協議)
.h
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;
@end
@interface ContactsCtrl : UIViewController {
id delegate;
}
@property (nonatomic, assign) id delegate;
.m
@synthesize delegate;
三、例子
例如:UITextView
@protocol UITextViewDelegate
@optional
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;
- (void)textViewDidChangeSelection:(UITextView *)textView;
@end
如果要調用以上這些方法,就必須設置UITextView的委托:TextView.delegate = self;