何时在 Objective-C 方法中 'return'

When to 'return' in an Objective-C method

只是一个简短的问题。我只是在徘徊是否,即使在 void 函数中我仍然必须 "return;"?

目前,即使在没有 returning variable/etc 的方法中,我仍然在方法末尾有 "return"。

那我还需要这个吗?因为我发誓没有它,它不会 return 到调用它的地方。

EG:

-(void)viewDidLoad {
    [super viewDidLoad];

    // Run other setup code....

    // Run method 1.
    [self method_01];

    // Run next bit of code....
}

-(void)method_01 {

     // Run code....

     return;
}

还需要像上面的例子那样做吗?

丹,谢谢你的时间。

你没有。一旦到达当前范围的末尾,该方法将 return 返回到其先前的执行点。

您可以任意选择。它应该自动 return 而无需显式 return.

您不需要在使用 void 定义的方法中调用 return,因此不会 return 一个值。

有时您会希望在此类方法中调用 return,例如如果您希望在满足特定条件的情况下退出方法而不执行剩余代码:

if (iHaveDeterminedIAmFinished) {
    return;
}

... // code that would otherwise execute.

除此之外,在每个方法的末尾例行地包含 return 将是一种不好的做法。每个 Objective-C 方法 return 无一例外,如果它在没有前一个 return 的情况下到达方法的末尾。因此,对于熟悉 Objective-C 的 reader 来说,这种做法不会更清楚。事实上,这可能会使阅读您的代码的其他开发人员感到困惑,他们会想知道您的意图是什么。它可能看起来像是从方法末尾省略了一些东西,因为否则没有理由包含这个 return 。简而言之,我建议在方法末尾包含不必要的 return 调用是不好的做法。

Because I swear without it, it does NOT return to where it was called from.

这里发生了其他事情。您可能很需要弄清楚它是什么,但是没有 return 调用会阻止 return 执行的说法是不正确的。要么它正在 returning,但您出于某种原因没有意识到它,或者您的代码中发生了其他事情。

如果 return 在方法的末尾,则没有任何区别。

-(void) doSomethingWithX:(int) X
{
     ..........................
     ........some Code.........
     ..........................

     return ;
 }

控件将在方法执行完成后到达调用方。标记 return 也是一样。

然而在如下情况下,

-(void) doSomethingWithX:(int) X
{
     if(X>10)
     {
          return;
     }

     ..........................
     ........some Code.........
     ..........................
 }

如果你的X值大于10,some code将不会被执行。所以,默认控制return到方法结束的调用者。如果要在方法执行之间强制调用 return,请使用 return。