私はiPhoneアプリでこれを使っていました
if (title == nil) {
// do something
}
しかし、何らかの例外がスローされ、コンソールにはタイトルが「(null)」と表示されます。
だから私は今これを使っています:
if (title == nil || [title isKindOfClass:[NSNull class]]) {
//do something
}
違いは何ですか? また、文字列が null かどうかを判断する最良の方法は何ですか?
ベストアンサー1
他の人が指摘しているように、Cocoa/Objective C では「null」の種類が多数あります。しかし、もう 1 つ注意すべき点は、[title isKindOfClass:[NSNull class]] は [NSNull null] がシングルトンであると文書化されているため、ポインタの等価性をチェックするだけで済むため、無意味に複雑であるということです。Cocoa のトピック: Null の使用。
したがって、良いテストは次のようになります。
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
title が nil であっても、title.length は 0/nil/false (この場合は 0) を返すため、特別なケースにする必要がないことに注意してください。これは、Objective C を初めて使用する人にとっては慣れるのに苦労する部分であり、特に nil へのメッセージ/メソッド呼び出しがクラッシュする他の言語から来た人にとっては困難です。