iOS 委託模式 理解例子

來源:互聯網
上載者:User

標籤:

古代希臘有個哲學家,他畢生只做三件事:“吃飯”“睡覺”“工作”。為了更好的生活,提高工作的效率,他決定找個徒弟,把這些事委託給徒弟做。然而要成為他的徒弟,需要實現一個協議,協議要求能夠處理睡覺,吃飯,工作這三件事,

這裡面涉及到三個對象:

第一: 哲學家  對應一個通用類 Philospher 

第二: 協議    對應一個PhilospherDelegate   規定了三種方法  sleep eat work

第三: 徒弟    對應一個委派物件 ViewController

委託協議 :PhilospherDelegate.h

@protocol PhilosopherDelegate@required-(void) sleep;-(void) eat;-(void) work;@end

 委託協議不需要.m檔案 可以定義在 其他的 .h檔案中

 

委託類 ViewController

#import <UIKit/UIKit.h>#import "PhilosopherDelegate.h"@interface ViewController : UIViewController<PhilosopherDelegate>@end

 

#import "ViewController.h"#import "Philosopher.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{    [super viewDidLoad];    Philosopher *obj = [[Philosopher alloc ] init];    obj.delegate = self;    [obj start];}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}#pragma -- PhilosopherDelegate 方法實現-(void) sleep{    NSLog(@"sleep...");}-(void) eat{     NSLog(@"eat...");}-(void) work{     NSLog(@"work...");}@end

 

哲學家 Philosopher

#import "PhilosopherDelegate.h"@interface Philosopher : NSObject{    NSTimer *timer;    int count;}@property  (nonatomic, weak) id<PhilosopherDelegate> delegate;-(void) start;-(void) handle;@end

 

#import "Philosopher.h"@implementation Philosopher@synthesize delegate;-(void) start{    count= 0;    timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(handle)userInfo:nil repeats:YES]; }-(void)handle{    switch (count)    {        case 0:            [self.delegate sleep];            count++;            break;        case 1:            [self.delegate eat];            count++;            break;        case 2:            [self.delegate work];            [timer  invalidate];            break;    }}@end

 

iOS 委託模式 理解例子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.