2011-06-24 104 views
0

我正在使用asi-http-request將文件上傳到服務器。 我的代碼曾經工作正常,直到它開始崩潰。 崩潰發生在兩種方式中: - 文件正在上傳並且進度正常,直到達到結尾,然後整個應用程序崩潰。 - 用戶按下「取消」按鈕取消上傳。iPhone應用程序崩潰在http post上使用asi-http-request

我得到的控制檯上的錯誤: 終止拋出的一個實例後,被稱爲「NSException」 和:線程1:程序接收到的信號:SIGABRT

這些是2個錯誤我明白了。沒有更多信息。

這是代碼:

request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:UPLOAD_URL_DEV]]; 
[request setDelegate:self]; 
[request setFile:videoFile forKey:@"video"]; 
[request setPostValue:longitude forKey:@"longitude"]; 
[request setPostValue:latitude forKey:@"latitude"]; 
[request setPostValue:horizontalAccuracy forKey:@"accuracytHorizontal"]; 
[request setPostValue:verticalAccuracy forKey:@"accuracyVertical"];  
[request setPostValue:context forKey:@"context"]; 
[request setPostValue:[UIDevice currentDevice].uniqueIdentifier forKey:@"deviceId"]; 
NSLog([NSString stringWithFormat:@"Upload Recording time: %@", currentTime]); 
[request setPostValue:currentTime forKey:@"time"]; 
NSLog([NSString stringWithFormat:@"Facebook access token: %@", facebook.accessToken]); 
[request setPostValue:facebook.accessToken forKey:@"accessToken"]; 

NSLog([NSString stringWithFormat:@"Facebook user id: %@", [defaults objectForKey:@"facebook_user_id"]]); 

[request setPostValue:[defaults objectForKey:@"facebook_user_id"] forKey:@"userId"]; 
[request setUploadProgressDelegate:uploadProgress]; 
uploadProgress.progress = 0; 
uploadProgress.hidden = NO; 
labelSendVideo.hidden = NO; 
NSLog(@"Starting async upload"); 
[request startAsynchronous];  

誰能告訴我什麼是錯?也許這是一個記憶問題?

+0

這不是問題,但是你可以使用沒有'NSString'位的'NSLog',例如'NSLog(@「Facebook用戶ID:%@」,[默認objectForKey:@「facebook_user_id」]);'工作得很好。 – PengOne

+0

什麼是'uploadProgress'? –

+0

感謝您對NSString的建議。 「uploadProgress」是一個進度組件。順便說一下,進展順利。 – bashan

回答

1

沒有「didFinish ...」和「didFail ...」委託方法的代碼。

還要確保在下載完成或取消之前,代理實例(此處爲「self」)未取消分配。

+0

我確實擁有委託方法,並且在「自我」對象中創建了「請求」對象。我想我通過在委託方法中更改參數的名稱來解決問題。它曾經是:(ASIHTTPRequest *)請求,我將它改爲:(ASIHTTPRequest *)請求。我認爲它與「請求」成員衝突(我需要它是全球性的,因爲我使用[請求取消]。 – bashan

+0

好的..爲了避免將來出現這樣的問題,您可能需要遵循關於命名約定在obj-C中,例如,類私有變量可以被命名爲「request_」,爲本地命名留下「請求」,並且它也使得意圖清楚,該變量是本地的或屬於類別 – Sailesh

+1

請添加該答案並且將其標記爲已接受。 –