다음 방법을 고려하십시오.
- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
new nonnull
및 nullable
주석 키워드를 사용하여 다음과 같이 보강 할 수 있습니다.
- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
그러나 우리는 또한이 경고를받습니다 :
포인터에 null 허용 여부 유형 지정자 (__nonnull 또는 __nullable)가 없습니다.
세 번째 매개 변수 (블록 1)를 참조합니다.
문서 블록 매개 변수의 Null 허용 여부를 지정하는 방법을 예제와 함께 적용되지 않습니다. 축 어적으로 진술합니다.
형식이 단순 개체 또는 블록 포인터 인 한, 여는 괄호 바로 뒤에 밑줄이없는 형식의 nullable 및 nonnull을 사용할 수 있습니다.
나는 운없이 블록에 대한 두 키워드 중 하나를 (어느 위치 에나) 넣어 보았습니다. 또한 밑줄 접두사 변형 ( __nonnull
및 __nullable
)을 시도했습니다 .
따라서 내 질문은 : 블록 매개 변수에 대한 null 허용 의미를 어떻게 지정할 수 있습니까?
NSError **
유형 과 어떻게 작동 합니까? 컴파일러를 행복하게 만들 수없는 것 같습니다.