Wenn nicht NSURLConnection ist initWithRequest return null
Weiß jemand, in welchen Situationen die Initialisierung einer NSURLConnection
gibt es nil zurück anstatt die erstellte Verbindung. Die Dokumentation sagt, es ist möglich, aber kann nicht angeben, Wann dies geschieht.
Die Methode/message in Frage:
[[NSURLConnection alloc] initWithRequest:request delegate:self];
-
Entsprechend der NSURLConnection
Klasse Referenz:
Rückgabewert: Die URL-Verbindung für den URL anfordern. Wird nil zurückgegeben, wenn eine Verbindung kann nicht initialisiert werden.
Das URL-Loading-System Programming Guide sagt Folgendes:
Wenn NSURLConnection können nicht erstellen Sie eine Verbindung für die Anfrage, initWithRequest:Stellvertretung: wird nil zurückgegeben.
-
Während es ist möglich, dass diese Methode gibt null, ich bin nicht in der Lage zu kommen mit ein Szenario, was löst diese. Ich habe versucht, die folgenden Szenarien:
URLRequest
mit einer leeren url:connection:didFailWithError:
delegate-Methode wird aufgerufen, mit "unsupported URL" als Fehler.URLRequest
mit ungültige url:connection:didFailWithError:
delegate-Methode wird aufgerufen, mit "bad URL" als Fehler.URLRequest
mit nicht existierenden url:connection:didFailWithError:
delegate-Methode wird aufgerufen, mit "Ein server mit dem angegebenen Hostnamen konnte nicht gefunden werden." als Fehler.- Gültige Anforderung, aber kein internet:
connection:didFailWithError:
delegate-Methode wird aufgerufen, mit "Die Internet-Verbindung scheint offline zu sein." als Fehler. - null-request: einen Absturz verursacht.
Den initWithRequest
Methode zurückgegeben eine gültige NSURLConnection
in jedem Szenario (außer dem letzten) und rief die connection:didFailWithError:
mit einer entsprechenden Fehlermeldung.
Hat jemand in der Lage gewesen, um herauszufinden, welches Szenario bewirkt, dass null zurückgegeben werden?
- Warum wollen Sie das wissen? Wenn es passiert nie, es ist nicht ein problem, richtig? 🙂
- Es passiert tatsächlich, und ich versuche, herauszufinden, was Sie verursacht. Eine Italienisch-tester gemeldet... #Tipp
- Jedes update auf dieser? Noch immer keine befriedigende Antwort ;(
- Auf ios7/8 null-Antrag nicht einen Absturz verursachen, und init wird nil zurückgegeben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, das kann auch verwendet werden, wenn es nicht zu laden, nicht nur initialisieren. (Die alloc erfolgt GESONDERT - das ist, wo die low mem würde wahrscheinlich beißen Sie), So dass (ich vermute), könnte es scheitern, weil Sie nicht über ein Netzwerk verfügbar ist (3G/Wifi) oder es einfach nur failed to connect to the server. In jedem Fall, verwenden Sie:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
Um die tatsächlichen Ausfall.
Können Sie in der Lage sein, um das zu simulieren mit einer Abwesenheit von einem Netzwerk - oder auch gibt es eine schlechte URL.
Ich denke, die Antwort ist "Nie". Scheint der einzige Weg für NSURLConnection zurück null ist, andernfalls auf [super init]. ([super init] die Rückgabe null), Sondern als super-Klasse NSURLConnection ist NSObject und NSObjects init nur die Renditen selbst (nie null)
PS: Das IOS SDK 4.0 auf emulator, kann anders auf dem Gerät.
init
in NSObject Unterklassen: "Unterklasse Implementierungen dieser Methode initialisieren und Rückgabe des neuen Objekts. Wenn es nicht initialisiert werden, sollten Sie das Objekt freigeben, das und zurück null."Ich würde versuchen, alle der oben genannten, außer es tun, während low-memory Bedingungen. DH, ich denke, es wird passieren, wenn ein interner malloc fehlschlägt.
Ich glaube, dies wird verursacht, wenn die Anfrage u angegeben hat, falsche oder nicht alle wesentlichen Werte
NSURLConnection, wird nil zurückgegeben, wenn es nicht innerhalb eines runLoop.