《Objective-C编程 第二版》笔记15:回调

本文探讨了Objective-C中的事件驱动编程,重点介绍了四种实现回调的方法:目标-动作对、辅助对象(委托)、通知和Block对象。通过创建Callback项目,详细解释了每种方法的工作原理和应用场景,强调了在实际应用中如何选择合适的方式以及回调与对象所有权的关系,以防止强引用循环。
摘要由CSDN通过智能技术生成

      本章将介绍事件驱动程序,这个程序能保持运行、等待事件,并做相应的处理。

       回调就是将一段可执行代码和特定的事件绑定起来。

       OC中实现回调的4种途径。

       (1) 目标-动作对:在程序开始等待前,要求当事件发生时,向指定的对象发送某个特定消息。这里接收消息的对象是目标,消息的选择器是动作。

       (2) 辅助对象:在程序开始等待前,要求当事件发生时,向遵守相应协议的辅助对象发送消息。 委托对象和数据源是常见的辅助对象。

       (3) 通知:苹果公司提供了通知中心对象。在程序开始等待前,可以告诉通知中心某个对象正在等待某些特定的通知,当其中的某个通知出现时,向指定的对象发送特定的消息。

       (4) Block对象:Block是一段可执行的代码。在程序开始等待前,声明一个Block对象,当事件发生时,执行这段Block对象。

 1、运行循环

创建一个CallBacks项目。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //NSRunLoop是运行循环的类,NSRunLoop 实例会持续等待,直到特定事件发生时,执行回调
        [[NSRunLoop currentRunLoop] run];
    }
    return 0;
}

Product->Stop结束程序。

2、目标-动作对

      计时器使用的是目标-动作对。

首先创建一个新文件,BNRLogger

.h文件
#import <Foundation/Foundation.h>

@interface BNRLogger : NSObject
//
@property (nonatomic) NSDate *lastTime;

- (NSString *) lastTimeString;
//动作方法总是有一个实参,它是用于传入发送动作消息的那个对象
- (void) updateLastTime:(NSTimer *)t;

@end

.m文件

#import "BNRLogger.h"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值