使用ASI庫調(diào)用delegata報錯thread 1:exc_bad_access(code=EXC_I386_GPFLT)

使用ASI庫調(diào)用delegata報錯thread 1:exc_bad_access(code=EXC_I386_GPFLT),按照網(wǎng)上的一些經(jīng)驗,將getadata改為nil以后就可以順利通過了。但是有需要接收服務器返回結(jié)果。

情況:項目使用的ASI庫上傳文件,為了根據(jù)結(jié)果做一些后續(xù)的操作,使用了Delegata來接收服務端返回的結(jié)果。代碼如下:

[request setDelegate:self];

//正常

-(void)requestFinished:(ASIHTTPRequest *)request{

? ? NSLog(@"requestFinished");

}

//異常

-(void)requestFailed:(ASIHTTPRequest *)request{

? ? NSLog(@"requestFailed");

}

//接收結(jié)果

-(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data{

? ? //接收返回結(jié)果

? ? NSString* recvData =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

? ? //NSString -> NSDictionary

? ? NSData *JSONData =[recvData dataUsingEncoding:NSUTF8StringEncoding];

? ? NSDictionary *responseJSON =[NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableLeaves error:nil];

? ? if([[responseJSON objectForKey:@"code"]isEqualToString:@"200"]){

? ? ? ? //需要執(zhí)行的操作

? ? }

}

打完全局斷點程序會顯示崩潰在:

if(delegate &&[delegate respondsToSelector:didStartSelector]){

[delegate performSelector:didStartSelector withObject:self];

}

這就很尷尬了,ASI這個庫已經(jīng)不維護太久了,但是項目用的這個庫我又不得不去看,而且自己水平太菜搞不太清楚核心問題出在哪,只能判斷出問題是出于delegata的。經(jīng)過一番查找資料,終于找到了一種解決方案。把delegata刪除掉,換一種方式來接收返回結(jié)果。代碼如下:

[request setCompletionBlock :^{

? ? ? ? //請求響應結(jié)束,返回responseString

? ? ? ? NSString *recvData =[requestresponseString];//NSData *responseData =[request responseData];

? ? ? ? NSLog(@"%@",recvData);

? ? ? ? NSData *JSONData =[recvData dataUsingEncoding:NSUTF8StringEncoding];

? ? ? ? NSDictionary *responseJSON =[NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableLeaves error:nil];

? ? ? ? if([[responseJSON objectForKey:@"code"]isEqualToString:@"200"]){

? ? ? ? ? //需要執(zhí)行的操作

? ? ? ? }

? ? }];

? ? [request setFailedBlock :^{

? ? ? ? //請求響應失敗,返回錯誤信息

? ? ? ? NSError *error =[requesterror];

? ? ? ? NSLog(@"error:%@",[error userInfo]);

? ? }];

然后就順利的跑過了,謝謝這篇古老的帖子(貼在最下邊咯)。

古老的帖子(參考文檔):https://www.2cto.com/kf/201303/195374.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容