2

いつ (NSString *) name を使用し、いつ (NSString) *name を使用するのか理解できません。誰かが私を助けてくれることを願っています/

4

2 に答える 2

3

括弧はキャスト演算子を構成します。(NSString*) nameつまり、コンパイラは NSString へのポインタとして解釈する必要がありnameます。一方(NSString) *name、逆参照された値 (つまり、値がname指す値) を NSString としてコンパイラが解釈する必要があることを意味します。

于 2012-04-28T21:26:10.383 に答える
3

を使用する必要はありません(NSString)*nameNSString *は型です: のインスタンスへのポインタですNSString。したがって、次のようなメソッド宣言で:

- (NSString *)capitalisedString: (NSString *)string

出現するたび(NSString *)に「後に続くものは型を持つ」という意味になりますNSString *。最初のものはメソッドの戻り値がNSStringインスタンスであることを意味し、2 つ目は引数の型がインスタンスであることを意味しstringますNSString

この議論はキャストにも当てはまります。キャストとは、変数を特定の型であるかのように扱うようにコンパイラに指示する場合です。は型なのでNSString *、次のようにキャストします。

id object = //...
NSString *myString = (NSString *)object;
于 2012-04-28T21:26:18.640 に答える