1

null 허용 여부에 대한 많은 게시물을 읽었으나 내 인생에서 내 경고를 무시할 수는 없습니다. 다음은 몇 가지 예는 다음과 같습니다 널 (NULL) 포인터를 null이 허용되지 않는 포인터 유형 '을 NSData * _Nullable' 'NDSata * _Nonnull'Objective C의 특정 경우에 nonnull을 사용하는 방법

코드를 주변에서 "암시 적 변환 :

playPause = @[[UIImage imageNamed:@"Play"], [UIImage imageNamed: @"Pause"]]; 
[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]]; 

이러한 각각의

이 경고를 가져옵니다 NS_ASSUME_NONNULL_BEGIN/End가 작동하지 않습니다.

(Null이 아닌) __nonnull 등 다양한 조합을 시도해 보았으며 키워드의 마술 위치를 찾지 못해 경고 메시지가 사라집니다.

+0

? 그 모습에서'dataUsingEncoding :'은 nullable NSData 객체를 반환하고,'imagePropertiesFileHandle'는'nonnull' 포인터를 기대합니다. – JAL

답변

2

문제는 NSString dataUsingEncoding: 메서드는 nil을 반환 할 수 있습니다. 그러나 NSFileHandle writeData:nil 매개 변수를 허용하지 않습니다.

분할이 라인 :이 속으로

[imagePropertiesFileHandle writeData:[header dataUsingEncoding:NSUTF8StringEncoding]]; 

:`header`은 무엇입니까

NSData *data = [header dataUsingEncoding:NSUTF8StringEncoding]; 
if (data) { 
    [imagePropertiesFileHandle writeData:data]; 
} 
+0

완벽한, 고마워. 나는 지금 그것을 얻고 나는 이것이 나의 다른 예에 어떻게 적용되는지를 본다. – user938797