下午交測開發的新功能,給測試演示的時候發現我負責的發帖頁面,在沒有添加關聯商品時發帖程序會閃退。會後我開始調試bug,查找緣由,一個全局斷點很容易就定位到了引發程序閃退的代碼,原來是一個把字典轉轉換成字符串的方法引發的。json
//字典轉爲Json字符串
+ (NSString *)convertDictionaryToJsonString:(NSDictionary *)dic
{
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
複製代碼
錯誤log以下: [NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON writebash
而引發錯誤的緣由是在沒有添加關聯商品時調用convertDictionaryToJsonString
方法時參數傳入的是一個空字符串,把字符串當成了一個字典使用,而字符串是沒法轉換成json格式的,因此代碼執行到NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
語句時,引發了應用閃退。測試
而出現這個bug的緣由是後臺接口返回數據發生了變化,同事在沒有告知個人狀況下幫我修改了代碼,好吧,啥都不想不說了。。。 來記錄一下第一次遇到的這個bug.ui