2012-05-07 88 views
-4

我注意到,當我的方法運行,沒有打印到控制檯:爲什麼NSLog()在方法返回後不做任何事情?

- (BOOL)theTemporyFunction 
{ 
    return YES; 
    NSLog(@"Events"); 
} 

但是當我改變語句的順序:

- (BOOL)theTemporyFunction 
{ 
    NSLog(@"Events"); 
    return YES; 
} 

NSLog()不運行。

兩個版本都能編譯,所以爲什麼NSLog()似乎不能在第一個版本中工作?

+3

返回後沒有語言執行代碼! – Vignesh

+0

難道你不會從xcode得到警告嗎? –

+1

'return'就是這樣,它返回一個值。 「返回」之後什麼也不會運行。由於這是編程中的一個非常基本的想法,如果您在發佈問題之前閱讀了關於編程的介紹性書籍,我認爲您未來將獲得較少的反對票。由Chris Pine推薦[Learn to Program](http://pine.fm/LearnToProgram/)。它也是Ruby編程語言的一個非常好的入門書。 – modocache

回答

6

return是在函數中執行的最後一個語句。在return statement之後,函數返回該控件給調用者。

例如:

function1          function2 
int x; 
function2();-----------------------------+ 
             +---->puts("function2 - should be called"); 
             +-----return; 
puts("back to function1");<--------------+  puts("should not be called"); 
+0

因此所有代碼在返回值後都不再工作? –

+0

編譯器甚至會在返回語句之後刪除任何代碼,因爲它在任何時候都無法達到。 – calimarkus

+0

是的,return語句之後的代碼沒有執行(例如,死代碼) – MByD

3

你真的需要學習編程基礎.. return - 因爲它規定 - 你是從方法執行返回到以前的背景下>>你離開的方法,在這一點上。

相關問題