Objective-C에서 `nil`의 탁월함
3431 단어 mobileprogramminglanguages
nil
가 작동하는 방식입니다.Swift에게 공평하게 말하면, Objective-C의 "nothing"개념은 일종의 엉망입니다. Swift에는 2개에 비해 4개의 다른 버전이 있기 때문입니다.
nil
빈 Objective-C 개체입니다.
Nil
비어 있는 Objective-C 클래스입니다.NULL
C에는 아무것도 없습니다.NSNull
Objective-C 컬렉션에서 null을 나타내는 데 주로 사용됩니다.NSNull
가 존재하는 이유는 Objective-C 컬렉션( NSArray
, NSDictionary
)이 nil
를 다른 방식으로 사용하기 때문입니다. NSArray
는 nil
종료되므로 다음과 같이 하면 됩니다.NSArray *array = @[@"a", @"b", nil, @"c"];
// array = [@"a", @"b"]
처음 두 요소만 사용할 수 있습니다.
NSDictionary
에서 키를 nil
로 설정하면 사전에서 제거되므로 NSNull
는 "이것은 사전에 존재하며 아무것도 아닙니다."라고 말하는 데 사용됩니다.기억해야 할 주요 사항은
NSNull
또는 NULL
에 할당된 포인터가 있고 이를 사용하여 무언가를 시도하면 앱이 충돌한다는 것입니다. nil
반면에 일종의 마법입니다. nil
는 NO
( false
)로 평가되고 nil
는 객체가 항상 nil
를 반환하므로 즉, nil
에 보낸 모든 항목이 nil
로 반환되고 다음과 같이 앱이 충돌하는 대신 false로 평가되기 때문입니다.if (dict != nil && dict.containsObjectForKey[@"a"]) { ... }
다음과 같이 될 수 있습니다.
if (dict.containsObjectForKey[@"a"]) { ... }
이것은 아마도 가장 덜 빠른 것일 것입니다. 하지만 이 스타일로 코딩하는 데 익숙하다면 환상적입니다.
dict
가 nil
일 가능성이 있는 많은(대부분?) 경우에 원하는 것은 아무 일도 일어나지 않는 것입니다. Swift가 처음 출시되었을 때 Brent said Swift로 전환하면 "광선 검에서 블래스터로 전환하려는 제다이 같은 느낌"이 제가 생각한 것입니다.Originally posted on collindonnell.com
없는 것보다 훨씬 많지만 Apple 플랫폼용 소프트웨어를 작성하고 있는지 여부를 아는 것이 여전히 중요하다고 생각합니다. ↩
Reference
이 문제에 관하여(Objective-C에서 `nil`의 탁월함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/collindonnell/the-brilliance-of-nil-in-objective-c-23be텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)