1

誰でも違いを教えてもらえますか

NSString* string;

NSString* string = [NSString string];
4

3 に答える 3

3

Cのように、

NSString *string;

変数 (ポインター) を宣言しますstringが、値を与えません。これは、変数を初期化するまで使用できないことを意味しますstring = @"foo";

ノート:

  • これがインスタンス変数の場合、実際には自動的に初期化されます — to nil.
  • 可能なすべての分岐(if条件など)で変数を初期化せずにコードのどこかで変数を使用すると、コンパイラは文句を言います。これを回避するには、空の文字列に設定するか、最初から設定することができますnil

この線

NSString *string = [NSString string];

クラスの+stringメソッドをNSString使用して空の文字列を作成します。を使用することもできます@""

(さらに注意:前者は構文の特異性を隠しているため、NSString *string代わりに使用することをお勧めします: 1行で複数のポインター変数を宣言する正しい方法です。)NSString* stringNSString *string1, *string2;

于 2012-10-17T19:44:53.277 に答える
2

NSString *文字列;

NSString最初は、名前付きの変数があることを宣言するだけですが、string初期化はしません。

何らかの条件によって決定される値の範囲のいずれかを文字列に含めたい場合に、これを行うことがあります。

NSString *string;

if (condition) {
    string = @"This condition";
} else {
    string = @"That condition";
}

NSString *string = [NSString string];

string2 番目は、変数を空の文字列に初期化する追加の手順を使用して、上記のすべてを実行しています。

文字列に特定の単一の値を含めたい場合は、次のようにします。

NSString *string = @"There are no conditions"
于 2012-10-17T19:43:45.247 に答える
1
NSString *string;

ポインターを作成しますが、文字列オブジェクト (インスタンス) は作成しません。コンパイラ オプションの場所に応じて、nil に初期化されるか、初期化されない場合があります。NSStringつまり、 bot noNSStringオブジェクトへのポインタ用の場所 (メモリ ストレージ) を作成します。

NSString *string = [NSString string];

空の文字列オブジェクト (インスタンス) とそれへのポインターを作成します。

于 2012-10-17T19:44:25.323 に答える