美文网首页
IOS_Block_定义

IOS_Block_定义

作者: 大美象 | 来源:发表于2017-02-16 11:31 被阅读44次

[TOC]

Declare

c语言中方法修饰符 ( ) ,如定义一个方法:

int f();

block指针修饰符^
block指针修饰符只能被应用于方法(你不可以写int ^a;这是没有被定义的)
这正是为什么int ^b( )是非法的,并且会造成编译器错误:如果你使用优先级规则来读这个声明,b将会是一个方法,这个方法返回一个指向int类型的block指针。你也知道,并没有这回事儿。所以当你声明一个block时,你总是需要将标识符和修饰符放在圆括号中了

int (^b)();

b是一个block指针,这个指针指向返回int类型的方法。
当然你也可以指定block所需要的参数:

int (^b)(long);
定义一个本地变量
returnType ( ^blockName)(parameterTypes) = ^returnType(parameters){};
例如:
int (^b) (int) = ^int(10){
  ... do some thing
};
定义一个property
@prpperty (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
例如:
@prpperty (nonatomic, copy, nullability) int (^b)(double);
作为参数或者返回值

在Objective-C方法中使用blocks作为参数或者返回值,我们需要寻找为那些blocks定义的抽象声明符。我们可以通过移去标识符。

int (^b)( )变成int (^)( ),  int (^b)(long)变成 int (^)(long).
- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
例如:
- (void) methodWithArgument: (int(^)( )) block;
- (void) anotherMethodWithArgument: (void(^)(long arg1)) block;

这些抽象声明中你不需要为你的block参数取名

作为 typedef:
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
例如:
typedef void(^failBlock)(NSError *error);
typedef void(^convertToMp4Completed)(void);

 
方法调用:
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];

refrence from
fuckingblocksyntax.com
objective-c-blocks-syntax
block_usage

相关文章

  • IOS_Block_定义

    [TOC] Declare c语言中方法修饰符 ( ) ,如定义一个方法: block指针修饰符^block指针修...

  • IOS_Block_注意事项

    1、在使用block前需要对block指针做判空处理 2.避免循环引用 block会飞内部的所有对象引用计数加1,...

  • 标签

    定义粗体文本 定义大字号 定义着重文字 定义斜体文字 定义小号字 定义加重语气 定义下表字 定义上标字 定义插入...

  • TypeScript——基础数据类型

    定义布尔类型 定义数字类型 定义字符串类型 定义数组类型 定义枚举 定义任意类型

  • HTML标签语言

    标签 描述 定义注释。 定义文档类型。 定义锚。 定义缩写。 定义只取...

  • kubernetes - 对象的定义(2)

    Pod的定义 Service的定义 Deployment的定义 Namespace的定义 ConfigMap的定义...

  • HTML文本格式化输出

    文本格式化标签 定义粗体文本 定义大字号 定义着重文字 定义斜体字 定义小字号 定义加重语气定义下标字定义上标字 ...

  • 定义你的定义

    写作08 什么是定义 01 什么是定义?为什么定义重要? 我们很喜欢下定义,但从来没有思考过什么是定义。 定义好坏...

  • HTML5初试牛刀

    标签描述定义注释。 定义文档类型。定义锚。定义缩写。定义只取首字母的缩写。 定义客户端脚本。 定义 section...

  • 夏夜所想

    谁定义了正常 谁定义了神经 谁定义了高贵 谁定义了卑微 谁定义了成功 谁定义了失败 谁定义了现实 谁定义了做梦 谁...

网友评论

      本文标题:IOS_Block_定义

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