【问题标题】:iPhone App crashes on http post using asi-http-requestiPhone 应用程序在使用 asi-http-request 的 http post 上崩溃
【发布时间】:2011-09-22 09:36:04
【问题描述】:

我正在使用 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];    

谁能告诉我有什么问题?可能是内存问题?

【问题讨论】:

  • 这不是问题,但您可以在没有NSString 位的情况下使用NSLog,例如NSLog(@"Facebook user id: %@", [defaults objectForKey:@"facebook_user_id"]); 效果很好。
  • 感谢有关 NSString 的建议。 “uploadProgress”是一个进度组件。顺便说一句,进展顺利。

标签: iphone crash asihttprequest sigabrt


【解决方案1】:

“didFinish...”和“didFail...”委托方法没有代码。

还要确保在下载完成或取消之前,委托实例(此处为“自身”)没有被释放。

【讨论】:

  • 我确实有委托方法,并且“请求”对象是在“自我”对象中创建的。我想我解决了这个问题,只需更改我的委托方法中的参数名称。它曾经是:(ASIHTTPRequest *)request,我将其更改为:(ASIHTTPRequest *)req。我认为它与“请求”成员冲突(我需要它是全局的,因为我使用 [request cancel]。
  • 啊好吧.. 为避免将来出现此类问题,您可能需要遵循有关 obj-C 中命名约定的某些准则。例如,类私有变量可以命名为“request_”,将“request”留给本地命名,并且它还明确了该变量是本地的还是属于类的意图。
猜你喜欢
  • 2014-11-23
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2011-06-03
  • 1970-01-01
相关资源
最近更新 更多