OC协议 委托

协议: 一套标准,方法,只声明了方法,没有实现,由接受协议的对象实现
协议本身,也可以服从其他协议
协议只有一个 .h 文件
协议能够变相的实现多继承 类:父类<协议>



UIScrollView 提供了屏幕滚动的功能,是所有滚动视图的基类,


#import <UIKit/UIKit.h>
#import
 "TestProtocol.h"
@protocol ProtocolTest <NSObject > //NSObject是一个协议
//位置关键
//协议 让类来接受,接受完需要实现被 @required 修饰的方法(此过程称为确认协议,遵守协议),在父类名后加<协议名 >
//一个类可以遵守多个协议,写在同一个<>,多个协议之间用逗号分隔
@required // @required  修饰的方法代表必须实现,是默认的
- (void)test1;
@optional//  @optional 修饰的方法代表可选实现
- (void)test2;
- (void)test3;
@end

@protocol WorkerProtocol <NSObject > 
- (void)work;
@end
@interface RootViewController : UIViewController<ProtocolTestWorkerProtocolTestProtocol > 
@end

代理(是一种设计模式) delegate
某些功能,自己不实现,别人帮忙实现,"别人"就是自己的代理


#import <Foundation/Foundation.h>
//以后继承,协议的头文件在.h中引入
//类的头文件在.m中引入
@protocol TestProtocol <NSObject]] > 
@required
- (void)testMethod1;
@optional
- (void)testMethod2;
@end

@interface Girl : NSObject
//id<BeforeMarriedProtocol> 称为 基于类型的一个限定
//想成为代理,必须遵守协议
@property (nonatomic,assignid<BeforeMarriedProtocol> delegate;
- (void)hungry:(NSString *)wantEatName;
@end

@implementation Girl
- (void)hungry:(NSString *)wantEatName
{
    //if([_delegate respondsToSelector:@selector(doHouseWork)])
    //做完家务才做饭
    if ([_delegate doHouseWork]) {
        //判断某个对象是否实现了某个方法
        //运行时绑定
        if ([_delegate respondsToSelector:@selector(doCook:)]) {
            //回调
            [_delegate doCook:wantEatName];
        }
    }
}
@end

UITextField  * tf = [[UITextField allocinitWithFrame:CGRectMake(205028030)];
    tf.borderStyle = UITextBorderStyleLine;
    tf.delegate = self;
    [self.view addSubview:tf];
    [tf release];
//textField被委托方,根视图控制器,委托方
//代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //处理用户的触摸事件
    NSLog(@"ShouldReturn");
    [textField resignFirstResponder];
    return YES;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    NSLog(@"ShouldBeginEditing");
    return YES;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值