調査したのでメモ
test.m
NSString *str = @"";
if(!str) {
printf("AAAA");
} else {
// こちらが呼ばれる
printf("BBBB");
}
test.m
NSString *str = nil;
if(!str) {
// こちらが呼ばれる
printf("AAAA");
} else {
printf("BBBB");
}
なるほど。
空文字列かnil
という判定をしたい場合にはこの書き方だと駄目。
書いてあった。
test.m
NSString *str = @"";
if([str length] == 0) {
// こっちが呼ばれる
printf("empty");
} else {
printf("no empty");
}
test.m
NSString *str = nil;
if([str length] == 0) {
// こっちが呼ばれる
printf("empty");
} else {
printf("no empty");
}
想定通りに動いた!