ちょっとだけ古いコードを触っていたらこんな警告に遭遇しました。
Null passed to a callee that requires a non-null argument NSMutableDictionary
実装的にはこんなかんじです。
NSMutableDictionary * xParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil];
こんなかんじにしてみても同様です。
NSMutableDictionary * xParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil, nil];
option+クリックでdictionaryWithObjectsAndKeysを見てみるとこんなかんじ。
ここで「nonnull」という単語が出てきました。
nonnull、及びnullableについてはSwift Blogに詳しく書かれています。
簡単に言うとnonnullはnil, nullを許容しないものであり、nil, nullを渡した場合は今回のように警告が表示されるということのようです。
なので今回の警告が出た場合はnil, nullではない引数を渡す必要があります。
今回私の場合は引数に渡すものがない(nilを詰めることになってしまう)実装になっていたので、おとなしく普通の初期化を行います。
NSMutableDictionary * xParams = [NSMutableDictionary dictionary];
これで警告が出なくなりました。