私はNSDictionaryにデータを入力し、辞書で計算を行うこのアプリを持っています。
tmp = nil;
tmp = [singleEvent objectForKey:@"start_date"];
if(tmp == nil)
{
startDate = [dateFormatter dateFromString:@"1800/1/1 12:00:00"];
}
else
{
startDate = [dateFormatter dateFromString:tmp];
}
tmp は NSString オブジェクトで、singleEvent は NSDictionary です。どちらも別の場所で宣言されています。簡単にするために、コードのその部分は含めませんでした。
ディクショナリのキー「start_date」には、文字列形式の日付が含まれることもあれば、null になることもあります。
nullになる条件を処理しましたが、コードがその行にヒットすることはありません。tmp が null の場合でも、実行が else 部分に移動することがデバッグによってわかりました。
デバッグ モードで tmp を監視すると、次のようになります。
tmp = (NSNull *)
しかし、それでもブロックがヒットします。 そのため、常に null ポインター例外が発生します。