zoukankan      html  css  js  c++  java
  • ios 协议代理

    1,oc类:

    返回值类型用()包住,也可不声明返回值,编译器会自动添加一个id类型的返

    回值。因此不推荐不写返回值,如果没有直接写(void

           参数定义:方法名字后面继续加:符号,表示参数。同样是()包住类型后面写变量名称,如果有多个,则依次书写即可。

    - (返回值类型)方法名字:(变量类型变量名字 标签1:(变量类型变量1名字;

    2,委托代理:既为某对象处理特定的事情的类

    //h文件
    #import <Foundation/Foundation.h>
    @class Button;
    
    // <>代表实现某个协议
    @protocol ButtonDelegate <NSObject>
    - (void)onClick:(Button *)btn;
    @end
    
    
    @interface Button : NSObject
    
    // delegate就是按钮的监听器
    @property (nonatomic, retain) id<ButtonDelegate> delegate;
    
    // 点击按钮
    - (void)click;
    @end
    //m文件
    #import "Button.h"
    
    @implementation Button
    
    
    - (void)dealloc {
        [_delegate release];
        
        [super dealloc];
    }
    
    - (void)click {
        // 如果_delegate实现了onClick:这个方法
        if ( [_delegate respondsToSelector:@selector(onClick:)] ) {
            // 按钮被点击了,就应该通知监听器.并且告诉监听器哪个按钮被点击了
            [_delegate onClick:self];
        } else {
            NSLog(@"监听器并没有实现onClick:方法");
        }
    }
    @end
    //h文件
    #import <Foundation/Foundation.h>
    
    @protocol ButtonDelegate;
    
    @interface MyListener : NSObject <ButtonDelegate>
    
    @end
    //m文件
    #import "MyListener.h"
    #import "Button.h"
    
    @implementation MyListener
    - (void)onClick {
        NSLog(@"MyListener已经监听到按钮被点击了");
    }
    
    - (void)onClick:(Button *)btn {
        NSLog(@"MyListener已经监听到按钮-%@被点击了", btn);
    }
    @end
    //main文件
    #import <Foundation/Foundation.h>
    #import "Button.h"
    #import "ButtonListener.h"
    #import "MyListener.h"
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            // 初始化一个按钮
            Button *button = [[[Button alloc] init] autorelease];
            MyListener *listener = [[[MyListener alloc] init] autorelease];
            
            // 设置按钮的监听器
            button.delegate = listener;
            NSLog(@"button:%@", button);
            // 点击按钮
            [button click];
            
            Button *button2 = [[[Button alloc] init] autorelease];
            button2.delegate = listener;
            NSLog(@"button2:%@", button2);
            // 点击button2
            [button2 click];
        }
        return 0;
    }
  • 相关阅读:
    五十二、使用Adb命令卸载android应用配置方法
    五十五、application用法
    五十七、SlidingDrawer (抽屉)的用法
    五十三、android启动过程
    六十、百度地图
    六十一、ListView,GridView和ScrollView上拉刷新和下拉更多
    显示设备信息
    打开HTML代码对应的页面
    体质指数计算
    OpenWebPage
  • 原文地址:https://www.cnblogs.com/wangzh1225/p/3418880.html
Copyright © 2011-2022 走看看