2012-03-03 11 views
0

私は客観的なCの新しいです。私はreturn文の値を持つメソッドをどのように呼び出すのだろうと思っていましたか?目的のCでメソッドを呼び出す方法は?

-(NSString*) exampleString 
{ 

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

return example; 


} 

今どのように私は、戻り値を取得するには上記の方法に呼ぶだろうか?

おかげ

答えて

4

メソッドを実装するクラスのインスタンスにメッセージを渡してメソッドを呼び出します。それは、C関数呼び出しのように、評価値に評価されます。

です。

NSString *fetchedExample = [self exampleString]; 

編集:以下のデイビッドの答えもまた繰り返す価値があります。 Objective-Cのオブジェクトでは、オブジェクトは不透明であり、いくつかの例外を除き、ヒープ上にのみ存在します。したがって、オブジェクト自体ではなくポインタを渡します。

+0

しかし、私はこの方法で他のことが起こっていると言うことができます...彼らはすべて[self exampleString];ありがとう – jamesHoward

+0

はい。 '[self exampleString];'はメッセージ 'exampleString'を' self'に投稿します。その名前のメソッドを明示的に実装しているため、そのメソッドが実行され、結果が返されます。 (例えば、 'self'は' exampleString'を実際に実装する必要はなく、実行時に何を望むかによって動的に何をするかを決めることができますが、概念的にはCの機能、すべての副作用 - Objective - Cは厳密に不可欠です。 – Tommy

3

NSStringの*文字列= [objectContainingTheMethod exampleString]。

Objective Cプログラミングのためのガイド、特にメソッドの宣言と使用法を確認してください。

1
NSString *returnedValue = [self exampleString]; 
2

Objective-Cへようこそ。あなたはObjective-Cのメソッドを呼び出しているときは、パラメータを渡したい場合は、これは

[self getText:@"hello"]; 

- (NSString *)getText:(NSString *)text 
{ 
    return text; 
} 
あなたのケースではそう
+0

素晴らしい、新しいことを今日学んだ。 – CroiOS

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

のように見えるかもしれ[object message]構文

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

を使用

NSString *returnedText = [self exampleString]; 

ちょうど注:メソッドの戻り値の型を "NSString"ではなく "NSString *"にNSStriオブジェクトを静的に宣言することはできません。

希望これは

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は、インスタンスを表しの中のクラスそのもののクラスメソッドではなく、インスタンスメソッド内でのみ使用できます。

関連する問題