Null passed to a callee that requires a non-null argument 오류란 무엇입니까?

2094 단어 iOSObjective-C
조금 오래된 코드를 만지면 이런 경고가 발생했습니다.
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];

이제 경고가 나오지 않습니다.

좋은 웹페이지 즐겨찾기