Xcode 6.3에는 Objective-C 에서 API의 의도를 더 잘 표현 하기 위해 (그리고 물론 더 나은 Swift 지원을 보장하기 위해) 새로운 주석이 도입되었습니다 . 이러한 주석은 물론 있었다 nonnull
, nullable
하고 null_unspecified
.
그러나 Xcode 7에서는 다음과 같은 많은 경고가 나타납니다.
포인터에 널 입력 가능 유형 지정자가 없습니다 (_Nonnull, _Nullable 또는 _Null_unspecified).
그 외에도 Apple은 다른 유형의 Null 허용 지정자를 사용하여 C 코드 ( source )를 표시합니다.
CFArrayRef __nonnull CFArrayCreate(
CFAllocatorRef __nullable allocator, const void * __nonnull * __nullable values, CFIndex numValues, const CFArrayCallBacks * __nullable callBacks);
요약하자면, 이제 다음과 같은 3 가지 널링 어노테이션이 있습니다.
nonnull
,nullable
,null_unspecified
_Nonnull
,_Nullable
,_Null_unspecified
__nonnull
,__nullable
,__null_unspecified
왜 어떤 위치에서 어떤 주석을 사용해야하는지 알고 있지만 어떤 유형의 주석을 사용해야하는지, 어디서, 왜 혼란스러워하고 있습니다. 이것이 내가 수집 할 수있는 것입니다.
- 내가 사용한다 속성
nonnull
,nullable
,null_unspecified
. - 내가 사용해야 메서드 매개 변수의 경우
nonnull
,nullable
,null_unspecified
. - 내가 사용한다 C 방법의 경우
__nonnull
,__nullable
,__null_unspecified
. - 그런 내가 사용한다 이중 포인터 등의 경우에 대해서는
_Nonnull
,_Nullable
,_Null_unspecified
.
그러나 나는 왜 우리가 기본적으로 같은 일을하는 많은 주석이 있는지에 대해 여전히 혼란 스럽습니다.
그래서 내 질문은 :
이러한 주석의 정확한 차이점은 무엇이며 올바르게 배치하는 방법과 이유는 무엇입니까?