下午交測開發的新功能,給測試演示的時候發現我負責的發帖頁面,在沒有新增關聯商品時發帖程式會閃退。會後我開始除錯bug,查詢原因,一個全域性斷點很容易就定位到了引起程式閃退的程式碼,原來是一個把字典轉轉換成字串的方法引起的。
//字典轉為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 write
而引起錯誤的原因是在沒有新增關聯商品時呼叫convertDictionaryToJsonString
方法時引數傳入的是一個空字串,把字串當成了一個字典使用,而字串是無法轉換成json格式的,所以程式碼執行到NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
語句時,引起了應用閃退。
而出現這個bug的原因是後臺介面返回資料發生了變化,同事在沒有告知我的情況下幫我修改了程式碼,好吧,啥都不想不說了。。。 來記錄一下第一次遇到的這個bug.