iPhone應用中Protocol協議使用方法

2021-06-03 17:05:04 字數 2957 閱讀 8358

iphone應用中protocol協議使用方法是本文要介紹的內容,文章有很詳細的介紹了protocol協議的使用方法,一起來看詳細內容。

一、說明

兩個類進行通訊,用協議就比較方便。

1、協議宣告了可以被任何類實現的方法

2、協議不是類,它是定義了乙個其他物件可以實現的介面

3、如果在某個類中實現了協議中的某個方法,也就是這個類實現了那個協議。

4、協議經常用來實現委託物件。乙個委託物件是一種用來協同或者代表其他物件的特殊物件。

5、委託,就是呼叫自己定義方法,別的類來實現。

6、新特性說明

@optional預編譯指令:表示可以選擇實現的方法

@required預編譯指令:表示必須強制實現的方法

二、定義

.h  

@protocol contactctrldelegate

-(void)dismisscontactsctrl;

@end

@inte***ce contactsctrl : uiviewcontroller

@property (nonatomic, assign) id <

contactctrldelegate

> delegate;

.m

@synthesize delegate;

三、例子

例如:uitextview

@protocol uitextviewdelegate <

nsobject

>

@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;

四、demo

1、contactsctrl.h

#import <

uikit/uikit.h>

//定義協議

@protocol contactctrldelegate

-(void)dismisscontactsctrl;

@end

@inte***ce contactsctrl : uiviewcontroller

@property (nonatomic, assign) id <

contactctrldelegate

> delegate;

-(ibaction)cancelbtn:(id)sender;

@end

2、contactsctrl.m

@implementation contactsctrl  

@synthesize delegate;

// implement viewdidload to do additional setup after loading the view, typically from a nib.

- (void)viewdidload

//呼叫協議中的方法

-(ibaction)cancelbtn:(id)sender

3、protocoldemoctrl.h

#import <

uikit/uikit.h>

#import "contactsctrl.h"

@inte***ce protocoldemoctrl : uiviewcontroller <

contactctrldelegate

>

4、protocoldemoctrl.m

#import "protocoldemoctrl.h"

#define barbuttonadd(selector) [[[uibarbuttonitem alloc] initwithbarbuttonsystemitem:uibarbuttonsystemitemadd target:

self action:selector] autorelease];

@implementation protocoldemoctrl

@synthesize contactsview;

// implement viewdidload to do additional setup after loading the view, typically from a nib.

- (void)viewdidload

- (void)addcontactaction:(id)sender

//實現contactctrldelegate協議中的方法

-(void)dismisscontactsctrl

iPhone中的SQLite應用

sqlite是基於c的api,在iphone中的執行速度超級快 在蘋果 上也有乙個對比,確實應該是速度最快的 由於在iphone3.0上已經支援了core data,是蘋果乙個新的api,並且是基於sqlite的。速度也是非常快吧,信不信由你。所以我們對sqlite僅需要懂一些即可,以下是一些基礎資...

iPhone中的SQLite應用

from sqlite是基於c的api,在iphone中的執行速度超級快 在蘋果 上也有乙個對比,確實應該是速度最快的 由於在iphone3.0上已經支援了core data,是蘋果乙個新的api,並且是基於sqlite的。速度也是非常快吧,信不信由你。所以我們對sqlite僅需要懂一些即可,以下是...

iPhone應用程式中App目錄結構

了解 iphone 應用程式中 目錄結構是本文要介紹的內容,不多說,直接進入內容。iphone 的 的目錄結構如下 2 documents 目錄就是我們可以用來寫入並儲存檔案得地方,一般可通過 nsarray paths nssearchpathfordirectoriesindomains nsd...