何らかの理由で、if条件で宣言された変数が未使用変数であり、後で使用される変数が未宣言変数を取得します。なぜこれが起こっているのか、それを修正する方法は何ですか?"if"条件が機能しない
NSString *name = [NSString stringWithFormat:@"Josh"];
if ([name isEqualToString:@"Josh"])
{
NSString *greeting = [NSString stringWithFormat:@"Hello Josh"]; //Warning: Unused variable 'greeting'
}
else
{
NSString *greeting = [NSString stringWithFormat:@"Hello %@", name]; //Warning: Unused variable 'greeting'
}
NSLog (@"%@", greeting); //Error: 'greeting' undeclared
フォーマット引数を指定しないときに ' - [NSString stringWithFormat:]'を使わない理由は ' - [NSString stringWithString:]'です。また、 '@" Josh "'は完全に有効なNSStringインスタンスです。NSString * name = [NSString stringWithString:@ "Josh"]; '、NSString * name = @" Josh ";'と入力する必要はありません。この場合は同等です。 – justin
@Justin、@theAmateurProgrammer: 'stringWithString:'を使う理由はあまりありません。通常は、文字列をそのまま使用してください。 –
@Peter Hoseyコメントの2番目の文はこの点になります – justin