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、付费专栏及课程。

余额充值