objective-c中委托与协议

木槿花 发布于 2013/08/03 10:23
阅读 182
收藏 0

oc中为什么要使用委托?委托是什么?可以具体举个例子吗?我这里有一个老师上课让练习的例子,但不知道每句话的意思,请大神指点

toy.h文件:

//59玩具设计

@protocol JackClient <NSObject>//构建客户端协议

-(void)musicDidPlay;

-(void)jackDidAppear;

@end

@interface JackInTheBox : NSObject{

    id<JackClient>client;

    int iNum;

}

-(void) turnTheCrank;//实现协议

@property(retain) id<JackClient> client;//

@end


@interface B : NSObject<JackClient>//实现JackClient协议

{

    JackInTheBox *jack;

}

-(id)init;

@property (retain) JackInTheBox *jack;

@end

toy.m文件:

@implementation JackInTheBox

-(void) turnTheCrank

{

    static int iNum=0;

    while (iNum++<20)

    {

        

    if(!self.client){

        NSLog(@"!self.client");

        return;

    }

    int action=random() %10;//随机函数,任意生成一个数字

    if(action<1)[self.client jackDidAppear];

    else [self.client musicDidPlay];

    }

}

@end

@implementation B

@synthesize jack;

-(id) init

{

    JackInTheBox *pJackInTheBox=[[JackInTheBox alloc]init];

    pJackInTheBox.client=self;

    [pJackInTheBox turnTheCrank];

}

-(void)musicDidPlay{

    NSLog(@"musicDidPlay");

}

-(void)jackDidAppear{

    NSLog(@"jackDidAppear");

}

@end

main.m文件:

NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];

B *pB=[[B alloc]init];

    [pool drain];

加载中
返回顶部
顶部