7

我们开始看到我们的应用程序启动时发生的崩溃。我无法重现它,而且它只发生在少数用户身上。

异常是:异常类型:EXC_BAD_ACCESS 代码:KERN_INVALID_ADDRESS at 0x3250974659

调用时崩溃发生在名为 com.apple.NSURLConnectionLoader 的线程中-[NSBlockOperation main]

这是该线程的堆栈跟踪:

0 libobjc.A.dylib objc_msgSend + 9
1 基础 - [NSBlockOperation 主] + 200
2 基础-[__NSOperationInternal start] + 840
3 基础-[_NSCFURLProtocolBridgeWithTrampoline processEventQ] + 344
4 基础-[_NSCFURLProtocolBridgeWithTrampoline pushEvent:from:] + 298
5 基础 -[_NSCFURLProtocolBridge 停止] + 88
6 基础 _bridger + 64
7 CFNetwork __block_global_7 + 24
8 CFNetwork __block_global_8 + 12
9 CFNetwork ___performAsync_block_invoke_068 + 18
10 核心基础 CFArrayApplyFunction + 176
11 CFNetwork RunloopBlockContext::perform() + 74
12 CFNetwork MultiplexerSource::perform() + 188
13 核心基础 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
14 核心基础 __CFRunLoopDoSources0 + 212
15 核心基础 __CFRunLoopRun + 646
16 核心基础 CFRunLoopRunSpecific + 356
17 核心基础 CFRunLoopRunInMode + 104
18 基础 +[NSURLConnection(Loader)_resourceLoadLoop:] + 308
19 基础 __NSThread__main__ + 972
20 libsystem_c.dylib _pthread_start + 308

希望有任何帮助以了解可能导致这种崩溃的原因。

4

2 回答 2

0

对我来说,这段代码间接导致了崩溃。如果我正确阅读了故障转储

[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]

正在触发 NSURLConnectionLoaderThread。这可能是他们用于异步支持的内容。但是当我使用同步请求时,我无法在线程运行时释放对象。如果你问我,那是 IOS 7 中的一个错误。

NSMutableURLRequest* request = [self setupRequestWithService:service andMethod:operation];

    [request addValue:CONTENT_TYPE_APPLICATION_JSON forHTTPHeaderField:REQUEST_HEADER_CONTENT_TYPE];
    [request setHTTPMethod:@"POST"];

    NSError* error = nil;
    NSData* jsonData = nil;

    NSAssert(message,@"Message must not be null");

    jsonData = [NSJSONSerialization dataWithJSONObject:[message toDictionary] options:kNilOptions error:&error];

    NSAssert(! error, @"Message could not be json serialized");

    Log(@"----------------------------------------------------------------------");
    Log(@"JSON DATA: - %@", [[NSString alloc] initWithData:jsonData
                                                     encoding:NSUTF8StringEncoding]);
    Log(@"----------------------------------------------------------------------");

    [request setHTTPBody:jsonData];

    // Send Synchronous Request
    NSURLResponse *response = nil;
    error = nil;
    NSData* responseData = nil;
    NSString* responseString = nil;

    responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
于 2013-10-19T12:56:55.003 回答
-1

我的猜测(因为没有代码,所有答案都会猜测) - 你是在块执行之前释放你在块中使用的对象。

粘贴代码,以便我们提供更多帮助。

于 2013-09-09T14:24:15.690 回答