如何从Objective C中的块返回?
例如,在下面的例子中你会怎么做到这一点?
[myObject loadThenCallback: ^(id response) {
if(!response) {
// quit early
}
// handle response
}];
答案 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;
}]