zoukankan      html  css  js  c++  java
  • IOS-OC delegate

    # OC delegate
    * 定义协议:创建一个属性和方法清单
    * 遵守协议:一个类实现某个协议中规定的方法
    * 一个类可以有其他很多属性或方法,可同时实现多个协议的属性和方法清单

    委托类的头文件

    //delegate 使用的前三步(委托者):1.声明 delegate 原型;2.声明 delegate 变量; 3.调用 delegate 方法
    //Delegate.h
    #import <Foundation/Foundation.h>
    @class ClassName;
    @protocol DelegateName <NSObject>
    @optional
    - (void)showName:(NSString*)Name;
    @end

    委托者的头文件

    //ClassName.h
    #import <Foundation/Foundation.h>
    #import "Delegate.h"
    @interface ClassName:NSObject
    //声明delegate 变量
    //委托是弱引用属性,避免对象及其delegate之间产生强引用循环
    @property (nonatomic,weak) id<DelegateName> delegate;
    @end

    委托者在.m文件中使用delegate 中的方法

    //ClassName.m
    #import "ClassName.h"
    @implementation ClassName
    - (id)init{
    self = [super init];
    if(self){
    //
    }
    return self;
    }
    - (void)useDelegate{
    [_delegate showName:@"SherylHan"];
    }

    被委托者实现delegate的方法

    //ClassB.h
    #import <Foundation/Foundation.h>
    #import "Delegate.h"
    //声明ClassB 遵循delegate
    @interface ClassB: NSObject<DelegateName>
    @end

    main.h中设置delegate的值

    //main.h
    #import <UIKit/UiKit.h>
    #import "AppDelegate.h"
    #import "ClassName.h"
    #import "ClassB.h"
    int main(int argc,char *argv[]){
    @autoreleasepool{
    ClassName *cn = [[ClassName alloc]init];
    ClassB *cb = [[ClassB alloc]init];
    //设置delegate的值
    cn.delegate = cb;
    //cn 接到了调用showName的任务,但是自己做不了,于是交给cb去做,但是要是执行这个任务还是要调用声明任务(delegate)的cn
    [cn showName];
    
    return UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]));
    }
    }

    被委托者实现delegate的方法

    //ClassB.m
    #import "ClassB.h"
    @implementation ClassB
    - (id) init(){
    self = [super init];
    if(self){
    //
    }
    return self;
    }
    - (void)showName:(NSString*)name{
    NSLog(name);
    }
  • 相关阅读:
    反向传播错漏百出小推导
    使用git遇到的
    Cost Function in Logistic Regression and Neural Network
    鼠标左键长按功能的实现
    同类控件的统一操作(以TCHECKBOX为例)
    HLP帮助文件源文件RTF文件的编写
    FORMAT 的用法
    DELPHI6中DSGNINTF.DCU找不到时的解决方法
    使窗体处于可“移动”,可改变“大小”状态中
    系统菜单的控制,使菜单项灰显及恢复功能
  • 原文地址:https://www.cnblogs.com/HackHer/p/6065401.html
Copyright © 2011-2022 走看看