IOS开发-NSString 导致程序exec_bad_access可能的原因

原创 2012年03月29日 09:35:39

我的问题是给sceneid分配了一个autorelease object,其是只要加上retain那句话就不会被NSAutoreleasePool释放了,debug时sceneid也会显示summary unavailable,OK了。

具体可以参考stackoverflow的原帖NSString makes my app crash… maybe,话说我是准备提问时,在建议的相似的问题里找到的,很好用的功能,呵呵。

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
	
    
    NSString *aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
    NSLog(@"Hava received datas is :%@",[aStr substringToIndex:1]);  
    NSString *fisrtChar=[aStr substringToIndex:1];
    if([fisrtChar isEqualToString:@"1"])
    {
        NSLog(@"Get Scene id %@",[aStr substringFromIndex:2]);
        //获取
        SceneId= [[NSString alloc] init];
        SceneId=[aStr substringFromIndex:2];
        //移除最后的终止符
        SceneId=[SceneId substringToIndex:[SceneId length]-1];
        [SceneId retain];
        NSString *cmds=[NSString stringWithFormat:@"2 %@*CAMERA1*DATA GET",SceneId];
        NSLog(@"cmd we use is %@",cmds);
        [self SendCommand:cmds ReturnValueType:1];
    }
    else if([fisrtChar isEqualToString:@"2"])
    {
        NSString *cmds=[NSString stringWithFormat:@"2 %@*CAMERA1*DATA GET",SceneId];
        NSLog(@"cmd we use is %@",cmds);
        
        NSLog(@"Get camera data %@",[aStr substringFromIndex:2]);
        NSString *temp=[aStr substringFromIndex:2];
        temp=[temp substringToIndex:[temp length]-1];
      
       [cameraData removeAllObjects];
        cameraData=[[NSMutableArray alloc] init];
        //cameraData= [NSMutableArray arrayWithObjects: @"one", @"two", @"three", @"four", nil];
        
        [cameraData addObjectsFromArray:[temp componentsSeparatedByString:@" "]];
       // NSLog(@"array length %@",cameraData);
        for(int i= 0; i< [cameraData count]; i++){
           NSLog(@"aaa %@" ,[cameraData objectAtIndex:i]);
        }
        //[temp release];
        
    }
    self.tb_result.text = aStr;  
    [aStr release];  
    [client readDataWithTimeout:-1 tag:0];  
   

}


iOS开发笔记--导致EXC_BAD_ACCESS问题的原因

写程序遇到 Bug 并不可怕,大部分的问题,通过简单的 Log 或者 代码分析并不难找到原因所在。但是在 Objective-C 编程中遇到 EXC_BAD_ACCESS 问题的时候,通过简单常规的手...

iPhone Objective-C EXC_BAD_ACCESS问题

写程序遇到 Bug 并不可怕,大部分的问题,通过简单的 Log 或者 代码分析并不难找到原因所在。但是在 Objective-C 编程中遇到 EXC_BAD_ACC...
  • sjzsp
  • sjzsp
  • 2011年05月03日 13:38
  • 3996

iOS WebView崩溃调试exc_bad_access

WebView崩溃调试exc_bad_access

iOS exc_bad_access

有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了。(悲伤地音乐响起) 我们需要做的第一件事就是:不要惊慌。 修复崩溃不是很困...

iOS常见异常Exec_Bad_Access问题解决办法

在iOS开发中,经常遇到Exec_Bad_Access异常,导致程序奔溃问题,一般这个问题都是因为过早的release对象,然后又对该对象发送消息导致这个问题。可以通过在Xcode中设置NSZombi...
  • yhawaii
  • yhawaii
  • 2012年07月26日 15:44
  • 4789

解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled

我们做iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像Thr...
  • likendsl
  • likendsl
  • 2012年05月14日 20:30
  • 81501

IOS开发之设置 NSZombieEnable 定位EXC_BAD_ACCESS错误

我们做 iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像 T...

iOS开发之调试技巧Xcode7中你一定要知道的炸裂调试神技、Address Sanitizer EXC_BAD_ACCESS

Xcode7中苹果为我们增加了两个重要的debug相关功能。了解之后觉得非常实用,介绍给大家。 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS  EXC_...

关于ios开发中遇到thread 1:exc_bad_access(code=1,address=0x50000010)类似的问题

最近开始做公司的ios项目,由于是c
  • chjx501
  • chjx501
  • 2014年08月21日 10:35
  • 13880

iOS开发EXC_BAD_ACCESS异常介绍

一:EXC_BAD_ACCESS异常介绍 在调试objective-c程序的过程中,程序crash的现象在所难免,但大部分的错误都能够通过显示的错误原因结合NSLog的方式来解决,比如NSInvali...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS开发-NSString 导致程序exec_bad_access可能的原因
举报原因:
原因补充:

(最多只允许输入30个字)