使用=在块中混淆

时间:2014-02-28 16:17:50

标签: ios objective-c block

void (^configureCell)(PhotoCell*, Photo*) = ^(PhotoCell* cell, Photo* photo) {
    cell.label.text = photo.name;
};

我从来没有见过一个块中的“=”符号,它是如何工作的?

谢谢!

3 个答案:

答案 0 :(得分:4)

如果你提到这个位

void (^configureCell)(PhotoCell*, Photo*) = ^(PhotoCell* cell, Photo* photo) {

这是将块分配给名为configureCell的变量。

我建议您查看http://www.fuckingblocksyntax.com

答案 1 :(得分:2)

这是一个分配给configureCell变量的块声明。

这是块变量定义(例如NSArray *数组):

void (^configureCell)(PhotoCell *, Photo *)

这是块定义:

^(PhotoCell* cell, Photo* photo) {...}

您可以像这样使用此块:

PhotoCell *cell = [PhotoCell ...];
Photo *photo = [Photo ...];

// Execute block
configureCell(cell, photo);

答案 2 :(得分:0)

看看the Apple Documentation。 如果您编写这样的代码块,您可以像在Java中那样调用方法。

因此您可以通过以下方式传递变量:

MyCustomCell *cell = configureCell(photoCellVariable, photoVariable);

而不是像消息一样调用它,就像你通常在Objective-C

中那样
MyCustomCell *cell = [ConfigurePhotoCell:photoCellVariable 
                        andPhotoVariable:photoVariable];