• oc Delegate


    把内部的状态通知给外界,我们可以制定一个变量,然后这个变量从外界来指定,之后我们可以通过变量去通知给外界有什么发生了。

    按照上文讲的到新建一个protocol,名字为IPeople

    #import <Foundation/Foundation.h>
    
    //oc里面的协议相当于java里面的接口
    @protocol IPeople <NSObject>
    
    -(int)getAge;
    -(void)setAge:(int)age;
    
    -(NSString*)getName;
    
    @end

    新建一个类文件

    Man.h

    #import <Foundation/Foundation.h>
    #import "IPeople.h"
    #import "ManDelegate.h"
    
    
    @interface Man : NSObject<IPeople> //可以写入多个接口,以逗号(,)隔开
    {
        int _age;
    }
    -(id)init;
    
    -(int)getAge;
    -(void)setAge:(int)age;
    
    -(NSString*)getName;
    
    @property id<ManDelegate> delegate;
    
    
    
    @end

    Man.m

    #import "Man.h"
    
    
    @implementation Man:NSObject
    
    
    - (instancetype)init
    {
        self = [super init];//相当于java里面的this
        if (self) {
            self.delegate=nil;
        }
        return self;
    }
    
    
    -(int)getAge{
        return _age;
    }
    
    -(void)setAge:(int)age{
        if(age!=_age){ //当age值发生变化时代理执行类
            if(self.delegate){
                [self.delegate onAgeChange:age];
            }
        }
        _age=age;
    }
    
    -(NSString*)getName{
        return @"Netcorner";
    }
    
    @end

    新建一个delegate类协议

    #import <Foundation/Foundation.h>
    
    @protocol ManDelegate <NSObject>
    -(void)onAgeChange:(int)age;
    @end

    主程序为:

    #import <UIKit/UIKit.h>
    #import "AppDelegate.h"
    #import "Man.h"
    #import "ManDelegate.h"
    //实现delegate协议的类
    @interface ManListener : NSObject<ManDelegate>
    -(void)onAgeChange:(int)age;
    @end
    
    @implementation ManListener
    
    -(void)onAgeChange:(int)age{
        NSLog(@"Age Changed,Current age is %d",age);
    }
    @end
    
    int main(int argc, char * argv[]) {
    
        Man *m=[[Man alloc]init ];
        [m setDelegate:[[ManListener alloc]init]];
        [m setAge:15];
        
    }
  • 相关阅读:
    婚礼珠宝策划
    Mandelbrot图像
    程序的又一次测量学实际应用(程序对全站仪测量学导出数据文件的读取与修改)
    中国海域系统源代码
    利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)
    ”上三角“行列式源代码(改良版,添加了几种特殊情况的特殊处理)
    中国海域系统
    Java
    Java
    【日记】12.12
  • 原文地址:https://www.cnblogs.com/netcorner/p/4742090.html
Copyright © 2020-2023  润新知