A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

          1> 定义一个协议,里面声明代理类需要实现的方法列表
          2> 创建一个代理类,遵守上面的代理协议
          3> 在需要代理的类中,定义一个对象 类型为id且遵守代理协
               议的成员变量(delegate)
          4> 在Baby类中调用成员变量delegate(代理)的方法,调用代理类的方
                法
          5> main.m或其他使用类的文件中,为类的成员变量(代理
          类)赋值
具体实现代码 : 购买电影票
协议.h
#import <Foundation/Foundation.h>

@protocol BuyFilmTicket <NSObject>
//声明一个买票协议
-(int)buyFilmTicket;
@end

APP.h

#import <Foundation/Foundation.h>
#import "BuyFilmTicket.h"
//商家遵守买票协议
@interface App : NSObject<BuyFilmTicket>
//商家买票声明
-(int)buyFilmTicket;
@end

APP.m
#import "App.h"

@implementation App
-(int)buyFilmTicket
{
    int pmoney;
    int count;
    NSLog(@"请输入您要购买的票数");
    scanf("%d",&count);
    NSLog(@"请您付钱");
    scanf("%d",&pmoney);
    if(pmoney>=count*50){
    int yue = pmoney-count*50;
    NSLog(@"我们给你买了%d张票,并赠送爆米花,您的余额是:%d",count,yue);
    }
    return count;//程序遇到return或者'}'结束
}
@end

person.h

#import <Foundation/Foundation.h>
#import "BuyFilmTicket.h"
#import "App.h"
@interface Person : NSObject
//声明需要代理的对象必须遵守的协议
//人要看电影
-(void)seeTheFilm;
@property(nonatomic,weak)id<BuyFilmTicket>delegate;

@end

person.m

#import "Person.h"

@implementation Person
-(void)seeTheFilm
{
    [self.delegate buyFilmTicket];
}
@end

main.m

#import <Foundation/Foundation.h>
#import "Person.h"
#import "App.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *p = [[Person alloc]init];
        
        App *a = [[App alloc]init];
        
        p.delegate = a;
        [p seeTheFilm];
    }
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马