2015-09-20 5 views
7

zaktualizowałem Xcode 7 i daje ten błądXcode 7 Null przekazane odbierającym, który wymaga niezerowym argumentem

Null przekazany do odbierającym wymagającego niezerowym argumentem

_recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", [NSHomeDirectory() stringByAppendingString:@"/Documents"], name, extension]] settings:nil error:nil]; 
+0

Pokaż pełny komunikat o błędzie i ślad stosu. – trojanfoe

+0

brak błędu tylko ostrzeżenie takie jak: Null przekazane do osoby, która wymaga niezerowego argumentu –

+0

OK od rozbicia tego oświadczenia na osobne wyciągi. W ten sposób możesz sprawdzić, który jest 'nil' w debugerze i właściwie zrozumieć, co robi. Robisz kij dla swoich własnych pleców z tak długimi złożonymi stwierdzeniami. – trojanfoe

Odpowiedz

2

Łatwym sposobem sprawdzenia jest użycie Show Completions - przejdź do nazwy metody i naciśnij Ctrl-Spacja lub w menu Editor>Show Completions. Pojawi się okno. Poszukaj wpisów z (nonnull) - nie mogą to być nil. Na przykład:

(nonnull) sample popup

Nacisnąłem Ctrl + Spacja z kursorem w [NSString stringWithFormat:...]. Jak widać wiele argumentów jest oznaczonych jako (nonnull).

Po jawnym przekazaniu nil w wywołaniu metody, problem został już wykryty. Jeśli przekazujesz zmienną, sprawdź, czy to jest nil w tym czasie.

+1

"Esc" wykonuje zadanie dla mnie zamiast Ctrl-Space (łatwiej trafić) – Mindaugas

+0

@Mindaugas Ah tak - pamiętam, że "esc'-popup mnie zirytował :-) –

25

Jeśli to, co Ci przeszkadza to ostrzeżenia, można wyciszyć, że za pomocą tego -Wnonnull

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wnonnull" 

_recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", [NSHomeDirectory() stringByAppendingString:@"/Documents"], name, extension]] settings:nil error:nil]; 

#pragma clang diagnostic pop 
Powiązane problemy