Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50615
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 297
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-09 10:52
文章分类

全部博文(34)

文章存档

2015年(23)

2014年(11)

我的朋友

分类: iOS平台

2015-03-27 17:02:52

1.Protocol

类似接口

里面的方法,不必要全部实现

 @protocol ButtonDelegate <NSObject> 代表实现协议NSObject     

//对协议进行提前声明,和@class一样

@protocol ButtonDelegate;


2.//  Button.h


#import 

@class Button;


@protocol ButtonDelegate <NSObject>


-(void)onClick:(Button *)bb;


@end



@interface Button : NSObject


//delegate 就是按钮监听器

@property (nonatomic,retainid <ButtonDelegate>delegate;


-(void)click;



@end


//  Button.m


#import "Button.h"


@implementation Button


-(void)dealloc{


    [_delegate release];


    [super dealloc];

}


-(void)click{

    //如果_delegate实现了onClick:方法就返回true

    if( [_delegate respondsToSelector:@selector(onClick:)] ){

        //按钮被点击了,并且告诉监听器哪个按钮被点击了

        [_delegate onClick:self];

    }


}



@end


//  ButtonLi.h


#import 


//对协议进行提前声明,和@class一样

@protocol ButtonDelegate;



@interface ButtonLi : NSObject<ButtonDelegate>




@end


//  ButtonLi.m


#import "ButtonLi.h"

#import "Button.h"


@implementation ButtonLi


-(void)onClick:(Button *)b{


    NSLog(@"%@按钮被点击了",b);

}


@end


//  main.m


#import 

#import "Button.h"

#import "ButtonLi.h"

#import "ButtonA.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //初始化按钮

        Button *bu = [[[Button allocinitautorelease];

        //初始化按钮监听器

        ButtonLi *bul = [[[ButtonLi allocinitautorelease];

        

        //设施按钮的监听器

        bu.delegate  = bul;

        //点击按钮

        [bu click];

        

        

    }

    return 0;


}


阅读(558) | 评论(0) | 转发(0) |
0

上一篇:OC入门篇8

下一篇:OC基础篇-1

给主人留下些什么吧!~~