4

如何从 Objective C 中的块返回?

例如,你会如何在下面的例子中很早?

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

4 回答 4

7

您的解决方案还可以(其他人不喜欢大量或提前退货声明),但当然在这种情况下您可以这样做

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

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

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

    // handle response
}];

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

于 2013-07-16T19:32:21.000 回答
3

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

[myObject loadThenCallback: ^(id response) {
    if(!response) { 
      return;
    }
    // handle response
}];
于 2013-07-16T19:21:17.890 回答
1

Objective-C 块或多或少类似于无名函数。通常,像函数一样,return末尾有 a 。请参阅 Apple 关于代码块的文档。

于 2013-07-16T19:32:07.810 回答
1

您可以将 block 视为带有一些额外内置上下文数据的匿名 C 函数。你希望在一个函数中做的所有事情,你都可以在一个块中完成。

return与在 C 函数中工作的方式相同,return在块中也可以工作。

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

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

[myObject callback: ^id(id response) {
    if(someCondition) 
    { 
       return NULL;
    }
    return something;
}]
于 2013-07-16T19:34:14.113 回答