2012-03-03 51 views
0

我是新來的目標c,我只是想知道我將如何調用具有返回語句值的方法?如何調用目標c中的方法?

-(NSString*) exampleString 
{ 

NSString *example= @"hello this a test"; 

return example; 


} 

現在我怎麼會呼籲上述方法得到的返回值?

由於

回答

4

您可以通過將消息傳遞給實現該方法的類的實例來調用方法。然後評估爲一個右值,就像一個C函數調用一樣。

因此,例如

NSString *fetchedExample = [self exampleString]; 

編輯:大衛的回答下面也值得重複。在Objective-C中,對象是不透明的,並且(有一些例外情況)只能在堆上生活,所以你會傳遞指向它們的指針而不是事物本身。

+0

但讓我們說我有這種方法正在進行的其他事情......他們都會再次觸發我調用[self exampleString];?謝謝 – jamesHoward 2012-03-03 02:02:01

+0

是的。 '[self exampleString];'將消息'exampleString'發佈到'self'。因爲你有一個具有該名稱的方法的顯式實現,這會導致該方法執行並返回結果。在幕後還有很多東西(例如,'self'實際上不需要實現'exampleString';它可以決定在運行時以什麼方式動態執行,如果它喜歡的話),但它在概念上與調用C函數,所有的副作用 - Objective-C是絕對必要的。 – Tommy 2012-03-03 02:07:24

3

的NSString *串= [objectContainingTheMethod exampleString];

查看Objective C編程指南,特別是方法的聲明和使用。

1
NSString *returnedValue = [self exampleString]; 
2

歡迎使用Objective-C,它很簡單。當你調用一個Objective-C的方法使用[object message]語法

NSString *exampleString = [self exampleString]; // self refers to the object or class 

如果你想傳遞一個參數,這可能看起來像

[self getText:@"hello"]; 

- (NSString *)getText:(NSString *)text 
{ 
    return text; 
} 
+0

很棒,今天學到了新東西。 – CroiOS 2012-11-03 15:06:08

1
NSString *returnedText = [self methodName:parameter]; 

所以你的情況,

NSString *returnedText = [self exampleString]; 

只需注意:確保將方法的返回類型更改爲「NSString *」而不是「NSString」作爲NSStri ng對象不能靜態聲明。

希望這有助於

1

先生,你對你的代碼中的錯誤,它應該是這樣的:

-(NSString *) exampleString{ 
    NSString *example= @"hello this a test"; 

    return example; 
} 

的錯誤是,你不能用一個方法而返回類型返回一個指針這不是一個指針(你最初有-(NSString)exampleString ...)。

現在要回答你的問題,這是一個實例方法,這是因爲在聲明開始時它使用短劃線( - )。還有其他類型的方法,如類方法,通過在聲明(+)中使用加號很容易區分它們。

由於這是一個實例方法,因此您需要有一個實例能夠調用此方法,因此首先必須聲明該類的實例,然後調用它,確保初始化它並分配一些空間(如果需要的話):

JamesHowardClass *myInstance=[[JamesHowardClass alloc] init]; 
NSLog(@"Rocking out my first method %@", [myInstance exampleString]); 

//Since you allocated some space, you should take care of the memory management 
[myInstance release]; 

現在看看另一種可能的用途,如果你在呼喚你的類聲明中這個方法,你應該這樣稱呼它:

NSLog(@"Rocking out my first method %@", [self exampleString]); 

self,代表一個實例c類中的類本身它只能在實例方法中使用,而不能用於類方法。