【问题标题】:How to resolve randomly app crash on IOS Device?如何解决IOS设备上的随机应用程序崩溃?
【发布时间】:2014-04-25 17:16:28
【问题描述】:

我正在使用 swrevealviewController 从一个视图滑动到另一个视图。 但是我的应用程序随机崩溃,当我从一个视图滑动到另一个视图时,在每个视图上,都有服务器调用显示视频列表。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{

    //NSLog(@"connection did finish loading %@",responseData);
    //NSString *str = [[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding];
    //NSLog(@"tdshjfhdkh %@",str);

    [self.resopnseDelagate carryData:responseData];
    responseData = nil;
}

我的应用程序在上述方法中随机崩溃,并在日志中给出错误,如下所示:: [viewController retain]:message sent to deallocated instance 0xa081994e

我也想通过使用 Crashlytic 来调试这个问题,但无法理解他们的日志,如下所示:

Thread : Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x3a78152c objc_retain + 11
1  DemoApp                       0x000d2c81 -[Connection connectionDidFinishLoading:] (Connection.m:76)
2  Foundation                     0x3341a6fd __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke_0 + 16
3  Foundation                     0x3335a1f9 -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 200
4  Foundation                     0x3335a115 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 60
5  CFNetwork                      0x327bc45f ___delegate_didFinishLoading_block_invoke_0 + 26
6  CFNetwork                      0x327bbb43 ___withDelegateAsync_block_invoke_0 + 54
7  CFNetwork                      0x327e3fcb ___performAsync_block_invoke_068 + 18
8  CoreFoundation                 0x32a2574d CFArrayApplyFunction + 176
9  CFNetwork                      0x327e442b RunloopBlockContext::perform() + 74
10 CFNetwork                      0x3274803d MultiplexerSource::perform() + 188
11 CoreFoundation                 0x32ab4683 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
12 CoreFoundation                 0x32ab3ee9 __CFRunLoopDoSources0 + 212
13 CoreFoundation                 0x32ab2cb7 __CFRunLoopRun + 646
14 CoreFoundation                 0x32a25ebd CFRunLoopRunSpecific + 356
15 CoreFoundation                 0x32a25d49 CFRunLoopRunInMode + 104
16 GraphicsServices               0x365e92eb GSEventRunModal + 74
17 UIKit                          0x3493b301 UIApplicationMain + 1120
18 DemoApp 

                  0x000da839 main (main.m:16)

请帮助我,在此先感谢。

【问题讨论】:

  • 你是使用ARC还是手动内存管理?
  • 清除派生数据,然后是模拟器。
  • 我在 Xcode 5.02 上使用 ARC
  • @KDRocks 你能写出负责调用connectionDidFinishLoading的代码吗?
  • 当我使用 nsurlconnection NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0f] 请求服务器时会自动调用它[请求 setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; [请求 setHTTPMethod:@"POST"]; NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES]; [连接开始];

标签: ios iphone objective-c xcode


【解决方案1】:

您正在尝试使用不再存在于内存中的视图控制器,因此首先打开 NSZombies 以找出发生这种情况的位置How to enable NSZombie in Xcode?

其次,在致电您的代表之前,您应该检查以确保其不为零

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{

    //NSLog(@"connection did finish loading %@",responseData);
    //NSString *str = [[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding];
    //NSLog(@"tdshjfhdkh %@",str);

    if([self.responseDelagate respondsToSelector:@selector(carryData:)]) {
        [self.resopnseDelagate carryData:responseData];
    }
    responseData = nil;
}

【讨论】:

  • 你说对了一部分。他正在使用不再存在的东西 - 唉,给 nil 的消息完全没问题,而且在这里崩溃了。问题可能是它不存在,但指针不是 nil。
  • 如果委托方法没有标记为@optional,那么if条件的唯一用途是隐藏错误->不要这样做。
  • carryData 是一个委托方法,用于将接收到的数据传递给任何视图控制器。在 connection.h 中使用 class @property(assign,nonatomic)id resopnseDelagate;
  • [viewController 保留]:在 nszombie 启用后发送到已释放实例 0xa081994e 的消息
【解决方案2】:

尝试像这样在 dealloc 中释放 responseData

-(void)dealloc{

 [repsonseData release];
 responseData = nil;

}

在调用方法之前检查你是否设置了 responseDelegate

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多