Ich habe eine NSObject-Klasse 'DataDownload_A' zum Herunterladen von Daten. Inside benutze ich NSURLSession und NSURLSessionTask. Jetzt ist das Problem, wenn ich dieses Objekt auf Null setze, wird die Dealloc nicht aufgerufen. Hier ist ein Segment-Code von DataDownload_A:Objekt Dealloc wird nicht aufgerufen, wenn NSURLSessionTask Lebenslauf heißt
NSString *urlString = [self URL];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
self.session = [NSURLSession sessionWithConfiguration:configuration
delegate:self
delegateQueue:nil];
self.receivedData = [NSMutableData data];
self.task = [self.session dataTaskWithRequest:theRequest];
[self.task resume];
Und wenn ich kommentieren Sie die letzten beiden Zeilen 'self.task = [self.session dataTaskWithRequest: theRequest];' und '[self.task resume];' wird dealloc aufgerufen. Daher nehme ich an, dass es einige Probleme geben muss, wenn ich sie verwende. Ich habe versucht, '[self.task cancel]', 'self.task = nil', '[self.session invalidateAndCancel];' und '[self.session resetWithCompletionHandler: nil];' bevor ich mein Objekt auf Null setze. Aber hat nicht geholfen.
Also weiß jemand, was der Fehler, den ich gemacht habe ?? Würde dankbar sein, mich wissen zu lassen. Vielen Dank im Voraus.
Hmm, ich löschte meine Antwort, aber Ihre [Aufgabe abzubrechen] und Aufgabe = Nil, sollte Dealloc aufrufen, aber es scheint, dass Sie etwas anderes haben, einen starken Bezug zu Ihrem "DataDownload_A", Sie sollte den Code für Ihren "DataDownload_A" -Aufrufer veröffentlichen. –
danke. Schleichen. Ich werde es versuchen. –