你如何从Objective C中的块返回

时间:2013-07-16 19:21:18

标签: ios objective-c objective-c-blocks

如何从Objective C中的块返回?

例如,在下面的例子中你会怎么做到这一点?

[myObject loadThenCallback: ^(id response) {
    if(!response) { 
      // quit early
    }
    // handle response
}];

4 个答案:

答案 0 :(得分:7)

你的解决方案没问题(其他人不喜欢很多或早期的退货声明),但当然在这种情况下你可以做到

[myObject loadThenCallback: ^(id response) {
    if(response) { 
      // handle response
    }
}];

如果我写条件提前返回语句,我更喜欢这段代码:

[myObject loadThenCallback: ^(id response) {
    if(!response) return;

    // handle response
}];

它是一样的,但我喜欢它的简洁。

答案 1 :(得分:2)

您可以使用块中的return语句提前返回。

[myObject loadThenCallback: ^(id response) {
    if(!response) { 
      return;
    }
    // handle response
}];

答案 2 :(得分:1)

Objective-C blocks或多或少都像无名的功能。通常,与功能一样,最后是return。请参阅Apple关于代码块的文档。

答案 3 :(得分:1)

您可以将块视为具有一些额外内置上下文数据的匿名C函数。你期望在一个功能中做的一切,你可以在一个区块内做。

return在C函数中的工作方式相同,return也适用于块。

[myObject loadThenCallback: ^(id response) {
    if(someCondition) 
    { 
       return;
    }
}];

如果块需要,请确保返回一个类型。

[myObject callback: ^id(id response) {
    if(someCondition) 
    { 
       return NULL;
    }
    return something;
}]