zoukankan      html  css  js  c++  java
  • ios高阶教程 块对象(block)的利用

    在iOS 4.0引入了块对象。快对象是C级别的构造,您可以在C或Objective-C代码中使用快对象。
    从本质上说,块对象本质上是一个匿名函数加上该函数的伴随数据。有些时候,其他语言也称块对象为 closure或者lambda。块对象非常适用于回调函数。如果您需要有很便捷的方法将执行代码和相关数据组合在一起,块对象也是很好的选择。

    在 iOS系统中,块对象通常用于下述场合:

    作为委托或委托方法的替代品。

    作为回调函数的替代品。

    用于实现一次性操作的完成处理器。

    简化在群体所有子项上迭代执行某种任务的操作。

    配合分发队列。可用于执行异步任务


    为什么要使用block?
    块对象封装一个单位(用术语来说就是代码段),这个代码段可以在任何时间执行。块对像有自己参数和返回值。你可以给你一个变量分配一个快对象,而这个块对象就像是你调用一个函数,快对象的返回值再传给变量;
    插入符号符号(^)是作为一个块的语法标记。例如:下面的代码声明块变量,两个整数并返回一个整数值。它提供了参数列表后的第二个插入符号和括号内的实现代码,并分配这些乘以变量;

    int (^Multiply)(int, int) = ^(int num1, int num2) {

    return num1 * num2;

    };

    int result = Multiply(7, 4); // result is 28

    快对象可以被认为是带有返回值类型的回调函数,在合适的时间,通过将代码块的参数传入代码块然后执行代码块返回值。为特定的应用程序代码提供额外的资源。
    作为对象块的一个优点就是:他们回在开发者提供的调用点(回调发生的时机)自动调用对象块。这样对象块内的代码就不用在一个单独的代理函数内执行,这样让代码更易懂和简单。
    我们以NSNotification各种通知为例。在“传统”的方法,一个对象增加了作为观察员通知,然后实现一个单独的方法(由在addObserver选择确定:..方法)处理通知:

    按原来的系统的方法是这样写的:

    - (void)viewDidLoad {

    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self

    selector:@selector(keyboardWillShow:)

    name:UIKeyboardWillShowNotification object:nil];

    }


    - (void)keyboardWillShow:(NSNotification *)notification {

    // Notification-handling code goes here.

    }

    我们利用块对象后为这样:通过方法: addObserverForName:object:queue:usingBlock:我们可以利用代码为这样:

    - (void)viewDidLoad {

    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification

    object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {

    // Notification-handling code goes here. 

    }];

    }

    代码块初步应用也许你会发现,你可以偷懒了,不过对于模块化编程的程序不到万不得已不要用,但是如果是服用少的代码只管用,你会发现你的代码好看很多。

  • 相关阅读:
    在项目开始前,为客户做专门的“需求变更流程”培训是必要的
    代码优化四部曲:“拆套”、“解耦”、”封装“、“重构”
    这个博客的目的就是解构程序猿的世界观
    如果3D技术仅仅只是用于游戏和娱乐,那真是太暴殄天物了
    如何用Xcode 4.5开发3.5寸屏幕的iPhone 应用程序?
    所谓开发经验,其实就是对业务流程的积累
    项目经理必备的两大能力
    XML文件总是无法读取其中的数据
    在switch的case语句后,使用UIAlertView报错
    代码编写原则
  • 原文地址:https://www.cnblogs.com/flylovesky/p/3276824.html
Copyright © 2011-2022 走看看