いつ (NSString *) name を使用し、いつ (NSString) *name を使用するのか理解できません。誰かが私を助けてくれることを願っています/
質問する
572 次
2 に答える
3
括弧はキャスト演算子を構成します。(NSString*) name
つまり、コンパイラは NSString へのポインタとして解釈する必要がありname
ます。一方(NSString) *name
、逆参照された値 (つまり、値がname
指す値) を NSString としてコンパイラが解釈する必要があることを意味します。
于 2012-04-28T21:26:10.383 に答える
3
を使用する必要はありません(NSString)*name
。NSString *
は型です: のインスタンスへのポインタですNSString
。したがって、次のようなメソッド宣言で:
- (NSString *)capitalisedString: (NSString *)string
出現するたび(NSString *)
に「後に続くものは型を持つ」という意味になりますNSString *
。最初のものはメソッドの戻り値がNSString
インスタンスであることを意味し、2 つ目は引数の型がインスタンスであることを意味しstring
ますNSString
。
この議論はキャストにも当てはまります。キャストとは、変数を特定の型であるかのように扱うようにコンパイラに指示する場合です。は型なのでNSString *
、次のようにキャストします。
id object = //...
NSString *myString = (NSString *)object;
于 2012-04-28T21:26:18.640 に答える