`
啸笑天
  • 浏览: 3466233 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

Block实例------用Block代替delegate来传递值

 
阅读更多

如果两个试图只是简单的1对1传值的话可以用Block代替delegate,使用简单。

@implementation NSObject(ZXObject)中

 

const char ZXObjectSingleObjectEvent;

 

-(void)receiveObject:(void(^)(id object))sendObject

 

{

 

    objc_setAssociatedObject(self,

 

                             &ZXObjectSingleObjectEvent,

 

                             sendObject,

 

                             OBJC_ASSOCIATION_RETAIN);

 

}

 

-(void)sendObject:(id)object

 

{

 

    void(^block)(id object) = objc_getAssociatedObject(self,&ZXObjectSingleObjectEvent);

 

    if(block != nil) block(object);

 

}

 

 

 

 

 

 

 source:https://github.com/zhangxigithub/BlockUI

 http://justsee.iteye.com/

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Delegate&Block作回调

    同时,Block还可以直接访问实例变量,不需要像Delegate那样通过self来访问。然而,Block会隐式创建强引用,可能导致循环引用,因此在使用时需要注意管理Block的生命周期和内存。 Delegate和Block在某些场景下可以...

    ios-Block基础,block传值,及自定义block方法.zip

    例如,一个简单的页面跳转时,我们可能需要在目标页面接收来自前一个页面的数据,这时可以通过Block将数据作为参数传递过去,而不是通过Delegate或NSNotification。 综上所述,Block是iOS开发中的重要工具,它简化...

    ios的视图之间使用Delegate传递数据

    本文将深入探讨如何在iOS的视图之间使用Delegate来实现数据的传递,以及相关源码和工具的应用。 一、Delegate协议的原理与设置 Delegate协议本质上是一种设计模式,它定义了一组方法,让一个对象(通常被称为委托...

    iiOS之Block夸页面传值

    通过创建一个Block实例,然后在页面之间进行传递,实现从一个页面到另一个页面的数据传输。`_PageToValueForBlock`可能是源文件的隐藏副本。 总之,Block在iOS开发中提供了一种有效且灵活的跨页面数据传递方式,...

    block实现例子(介绍block的代码)

    例如,我们经常在GCD(Grand Central Dispatch)中使用Block来定义后台任务,即使该任务在主线程之外执行,仍然可以访问和更新在创建Block时的变量。 Block的语法在Objective-C中表现为一对花括号 `{}` 包裹的代码...

    Block详解ppt

    如果变量在Block执行时发生变化,Block内部仍然使用的是定义时的值。 2. 引用类型捕获:对于对象类型的局部变量,Block捕获的是对象的引用,因此在Block内部对对象的操作会影响到外部的对象状态。 Block的内存管理...

    delegate一对多

    在描述中提到的"block传值",是指使用闭包(block)来传递数据或行为。闭包是一种强大的特性,可以捕获和存储其所在上下文的变量,并在需要时使用。在Objective-C和Swift中,我们都可以在方法中使用block参数,使得...

    OC中以delegate形式页面传值

    通过以上步骤,我们就能够使用OC中的`delegate`模式实现在页面间传递值。这种方法灵活且易于理解,但需要注意的是,对于大量或复杂的数据传输,其他机制如`NSUserDefault`、`Notification`或`Block`可能更为合适。在...

    block反向传值

    2. **创建Block实例**:在控制器A的跳转方法中,创建一个Block实例,并赋值给一个属性,以便在控制器B中可以访问。 ```objc CallbackBlock callback = ^(id result) { // 在这里处理从控制器B返回的数据 }; ```...

    单例代理block的使用

    本文将深入探讨如何结合代理和Block来使用单例,以实现更灵活和可扩展的代码。 首先,让我们了解单例的基本实现。在Objective-C中,我们通常使用`@interface`、`+ (instancetype)sharedInstance`和`dispatch_once`...

    ios-自定义实用Alert提示框(Block回调).zip

    对于初学者来说,这是一个很好的学习实例,展示了如何利用Block来改进系统组件的使用,以及如何通过封装来提高代码的复用性和可扩展性。 总之,这个项目是iOS开发中一个实用的技巧,对于想要提升用户体验和代码质量...

    block,代理传值

    在View上,我们可以创建多个ImageView,并为每个ImageView实例化一个`ImageDownloader`对象,设置其代理为我们自定义的ViewController,并提供一个block来接收进度更新。这样,每当下载进度改变时,ViewController会...

    界面传值,block,单利,协议,通知等

    界面传值有多种方式,如使用属性赋值、代理(Delegate)、Block、单例或通知。例如,可以创建一个公共的属性或方法,或者通过UIStoryboardSegue在准备ForSegue方法中传递数据。对于更复杂的场景,可以利用MVVM...

    UITextField+BlockDemo

    `UITextField+BlockDemo` 是一个示例项目,它展示了如何通过扩展`UITextField` 类并使用Blocks(block语法)来增强其功能,使得在处理用户输入事件时更加灵活便捷。这个项目的核心就是将传统的Delegate模式与Blocks...

    ios-传值.zip

    描述中的"各种代理,block传值"指出主要关注的是两种常见的数据传递机制:代理模式(Delegate)和Block(闭包)。下面我们将详细探讨这两种方法。 1. **代理模式(Delegate)**: 在Objective-C中,代理是一种设计...

    ios delegate 传值

    本文将深入探讨`ios delegate 传值`这一主题,结合给出的博客链接(已失效,但我们可以根据常规实践进行讲解)以及DelegateDemo示例项目,来详细介绍如何在Objective-C或Swift中使用Delegate来传递数据。 首先,...

    ios-传值集合.zip

    - 直接赋值或使用setter/getter方法来传递数据,简单方便。 - 如果需要跨视图控制器传递大量数据,可以使用`NSUserDefault`或`UserDefaults`存储,再在目标对象中读取。 4. **通知(Notification)**: - 通知...

    数据的顺序和反向传递

    3. **Block-Based Segue**: 虽然Apple不推荐,但可以通过自定义UIStoryboardSegue子类,使用block来实现反向数据传递。在自定义segue的实例中存储一个block,然后在`perform()`方法中调用它,将数据传递回源视图控制...

Global site tag (gtag.js) - Google Analytics