简单的协议应用-代理模式
生活随笔
收集整理的這篇文章主要介紹了
简单的协议应用-代理模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
協議(protocol):
<> 遵守某個協議,只要遵守了這個協議,相當于擁有協議里面的所有方法聲明
- 聲明一系列方法
- 編譯器不強求實現協議里所有的方法
- 分類和協議都只能聲明方法,不能聲明成員變量
- NSObject是基協議
假設一個人要買票,但是他沒有空,需要一個代理去幫他問問票價多少啊,還有幾張票啊~
協議TicketDelegate.h,這里指代理所需要擁有的方法。
// // TicketDelegate.h // 協議的應用-代理模式 // // Created by Mekor on 14-8-30. // Copyright (c) 2014年 Mekor. All rights reserved. // #import <Foundation/Foundation.h> //聲明一些跑腿方法 @protocol TicketDelegate <NSObject>//返回票價 -(double)ticketPrice; //還剩多少張票 -(int)leftTicketsNumber; @end人類:
// // main.m // 協議的應用-代理模式 // // Created by Mekor on 14-8-30. // Copyright (c) 2014年 Mekor. All rights reserved. // #import <Foundation/Foundation.h> #import "TicketDelegate.h"@interface Person : NSObject- (void) buyTicket;// 擁有一個代理屬性 // id代表代理的類名隨便 // 但必須遵守TicketDelegate協議 @property (nonatomic, retain) id<TicketDelegate> delegate;@end?
// // Person.m // 協議的應用-代理模式 // // Created by Mekor on 14-8-30. // Copyright (c) 2014年 Mekor. All rights reserved. // #import "Person.h"@implementation Person//買電影票 -(void)buyTicket {//叫代理幫自己去買票double price=[_delegate ticketPrice];int number=[_delegate leftTicketsNumber];NSLog(@"通過代理的幫助,票價=%f,還剩%d張票",price,number); } @end代理:
// // Agent.h // 協議的應用-代理模式 // // Created by Mekor on 14-8-30. // Copyright (c) 2014年 Mekor. All rights reserved. // #import <Foundation/Foundation.h> #import "TicketDelegate.h" @interface Agent : NSObject<TicketDelegate>@end // // Agent.m // 協議的應用-代理模式 // // Created by Mekor on 14-8-30. // Copyright (c) 2014年 Mekor. All rights reserved. // #import "Agent.h"@implementation Agent //剩余的票數 -(int)leftTicketsNumber {return 1; } //每一張票多少錢 -(double)ticketPrice {return 1000; } @endmain.m文件
1 // 2 // main.m 3 // 協議的應用-代理模式 4 // 5 // Created by Mekor on 14-8-30. 6 // Copyright (c) 2014年 Mekor. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 #import "Person.h" 11 #import "Agent.h" 12 int main(int argc, const char * argv[]) 13 { 14 15 @autoreleasepool { 16 Person *p = [[Person alloc] init]; 17 Agent *a=[[Agent alloc]init]; 18 p.delegate=a; 19 [p buyTicket]; 20 } 21 return 0; 22 }?
轉載于:https://www.cnblogs.com/mekor/p/3947160.html
總結
以上是生活随笔為你收集整理的简单的协议应用-代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Axure函数与变量
- 下一篇: poj 1077 Eight(A*)