誰でも違いを教えてもらえますか
NSString* string;
と
NSString* string = [NSString string];
Cのように、
NSString *string;
変数 (ポインター) を宣言しますstring
が、値を与えません。これは、変数を初期化するまで使用できないことを意味しますstring = @"foo";
。
ノート:
nil
.if
条件など)で変数を初期化せずにコードのどこかで変数を使用すると、コンパイラは文句を言います。これを回避するには、空の文字列に設定するか、最初から設定することができますnil
。この線
NSString *string = [NSString string];
クラスの+string
メソッドをNSString
使用して空の文字列を作成します。を使用することもできます@""
。
(さらに注意:前者は構文の特異性を隠しているため、NSString *string
代わりに使用することをお勧めします: 1行で複数のポインター変数を宣言する正しい方法です。)NSString* string
NSString *string1, *string2;
NSString
最初は、名前付きの変数があることを宣言するだけですが、string
初期化はしません。
何らかの条件によって決定される値の範囲のいずれかを文字列に含めたい場合に、これを行うことがあります。
NSString *string;
if (condition) {
string = @"This condition";
} else {
string = @"That condition";
}
string
2 番目は、変数を空の文字列に初期化する追加の手順を使用して、上記のすべてを実行しています。
文字列に特定の単一の値を含めたい場合は、次のようにします。
NSString *string = @"There are no conditions"
NSString *string;
ポインターを作成しますが、文字列オブジェクト (インスタンス) は作成しません。コンパイラ オプションの場所に応じて、nil に初期化されるか、初期化されない場合があります。NSString
つまり、 bot noNSString
オブジェクトへのポインタ用の場所 (メモリ ストレージ) を作成します。
NSString *string = [NSString string];
空の文字列オブジェクト (インスタンス) とそれへのポインターを作成します。