美文网首页
Block作监听器

Block作监听器

作者: solozyx | 来源:发表于2016-08-06 17:07 被阅读27次

Button : NSObject

Button.h

//
//  Button.h
//  2-Block作监听器
//
//  Created by zhaoyingxin on 16/8/6.
//  email zhaoyingxin@aliyun.com
//

#import <Foundation/Foundation.h>

//定义按钮的监听器需要首先定义一个协议
//想让block充当监听器首先也需要定义block,别人才知道block怎么写
@class Button;
typedef void (^ButtonBlock) (Button *btn);
//形式参数的名称可以省略
//typedef void (^ButtonBlock) (Button *);

@interface Button : NSObject
//对象类型 *obj
//block 没有 *

//严格的说block不能用assign
//Block的内存管理比较奇怪 block的内存管理会涉及copy语法
//用assign block自己会释放
@property (nonatomic,assign) ButtonBlock block;

//模拟点击按钮
-(void)click;
@end

Button.m

//
//  Button.m
//  2-Block作监听器
//
//  Created by zhaoyingxin on 16/8/6.
//  email zhaoyingxin@aliyun.com
//

#import "Button.h"

@implementation Button

//按钮被点击要通知按钮的监听器我被点击这里通知block按钮被点击了
//通知block就是调用block
//@property在Xcode4.5的时候会自动帮我们生成一个_下划线对应的成员变量
-(void)click{
    _block(self);
}
@end

main.m

//
//  main.m
//  2-Block作监听器
//
//  Created by zhaoyingxin on 16/8/6.
//  email zhaoyingxin@aliyun.com
//

#import "Button.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        Button *btn = [[Button alloc] init];
        btn.block = ^(Button *btn){
            NSLog(@"Button 被点击了");
        };
        [btn click];
    }
    return 0;
}

运行代码:

2016-08-06 17:13:48.634 2-Block作监听器[32162:459091] Button 被点击了
Program ended with exit code: 0

相关文章

  • Block作监听器

    Button : NSObject Button.h Button.m main.m 运行代码:

  • block传值

    1.block作属性 发送者 接收者 2.block作参数

  • Objective - C block(一)block的底层结构

    (一)Block的常见问题 首先我们先看下面几个问题: block的原理是怎样的?本质是什么? __block的作...

  • SpringBoot--监听器解析

    监听器模式 监听器模式有要素 事件 监听器 广播器 触发机制 系统监听器 监听器 ApplicationListe...

  • block的相关记录

    block的相关记录 block在创建的时候,它的内存是分配在栈上的,所以说block本身的作于域是属于创建时候的...

  • 监听器

    一、监听器定义 现实生活 -web监听器 二、web监听器应用 三、创建监听器 1、创建一个实现监听器接口的类。 ...

  • JavaWeb - Listener

    监听器 实现一个监听器的接口. 编写一个监听器实现监听器的接口 web.xml 中注册监听器 看情况是否使用

  • iOS Block用法和实现原理

    Block概要 Block:带有自动变量的匿名函数。 匿名函数:没有函数名的函数,一对{}包裹的内容是匿名函数的作...

  • Block学习笔记

    Block的初始化 block是一种特殊的数据类型,和Int,double,float....一样,可定义变量、作...

  • HXImage(方案二解析:弱引用字典)

    弱引用字典(用block封装与解封) 近日闲暇研究了下 HXImage,对block封装与解封有了初步的了解,作此...

网友评论

      本文标题:Block作监听器

      本文链接:https://www.haomeiwen.com/subject/qhiksttx.html