我不明白以下代码行中的问题。 我知道NSDictionary不允许插入nil对象,所以我在将对象插入NSDictionay之前检查nil,即使在出现崩溃之后也是如此。
-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response
{
Request * logRequest = [self.requestLogUtil newRequest];
logRequest.requestParams = @{@"HTTP Method": ([request HTTPMethod] != nil ? [request HTTPMethod] : @""),
@"HTTP Headers": ([request allHTTPHeaderFields] != nil ? [request allHTTPHeaderFields] : @""),
@"Post Parameters": (request.HTTPBody != nil? [NSString stringWithUTF8String:[request.HTTPBody bytes]]: @""),
@"Query Parameters": ([request.URL query] != nil ? [request.URL query] : @"")
};
}
它因以下原因而崩溃,但不是每次都崩溃。
*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从对象插入nil对象[2]'
答案 0 :(得分:0)
感谢Adam Wright!
我明白了。这是因为你对此有所怀疑。
由于某种原因,stringWithUTF8String返回NULL。
*由于未捕获的异常终止应用' NSInvalidArgumentException',原因:' * + [NSString stringWithUTF8String:]:NULL cString'
我需要检查上面的方法是否为NULL。