[IOS Block和delegate的對比]

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   檔案   art   

原文:http://blog.sina.com.cn/s/blog_9e8867eb0102uykn.html

 

這篇文章建議和前一篇一起看, 另外先弄清楚IOS的block是神馬東東。

 

委託和block是IOS上實現回調的兩種機制。Block基本可以代替委託的功能,而且實現起來比較簡潔,比較推薦能用block的地方不要用委託。

 

本篇的demo和前一篇是同一個,可以到github上下載不同的版本, 源碼:

https://github.com/pony-maggie/DelegateDemo

 

 

A類(timeControl類)的標頭檔先要定義block,代碼如下:

//委託的協議定義@protocol UpdateAlertDelegate <NSObject>- (void)updateAlert;@end@interface TimerControl : NSObject//委託變數定義@property (nonatomic, weak) id<UpdateAlertDelegate> delegate;//blocktypedef void (^UpdateAlertBlock)();@property (nonatomic, copy) UpdateAlertBlock updateAlertBlock;- (void) startTheTimer;   @end

A類的實現檔案,原來用委託的地方改成調用block:

 

 
- (void) timerProc{    //[self.delegate updateAlert];//委託更新UI    //block代替委託    if (self.updateAlertBlock)    {        self.updateAlertBlock();    }}

再來看看視圖類,實現block即可:

 

 
- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.    TimerControl *timer = [[TimerControl alloc] init];    timer.delegate = self; //設定委託執行個體        //實現block    timer.updateAlertBlock = ^()    {        UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"提示" message:@"時間到" delegate:self cancelButtonTitle:nil otherButtonTitles:@"確定",nil];                alert.alertViewStyle=UIAlertViewStyleDefault;        [alert show];    };                [timer startTheTimer];//啟動定時器,定時5觸發}

 

[IOS Block和delegate的對比]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.