2011-04-21 88 views
0
NSArray *listItems = [temp componentsSeparatedByString:@","]; 

任何人都可以告诉我为什么?这条线上的崩溃

温度是一个NSString

这里就是整个代码

- (NSString *)getStreetAddress 
{ 
    NSString* temp = [addressArray objectAtIndex:0]; 
    if (temp != nil) { 
     NSArray *listItems = [temp componentsSeparatedByString:@","]; 
     temp = [listItems objectAtIndex:0]; 
    } 
    return temp; 
} 

EXC_BAD_ACCESS是错误

+1

确切的错误是什么? – Zepplock 2011-04-21 21:29:04

+0

除了Zepplock请求的错误之外,您可以在该行上设置断点并输出temp的值是什么? – baalexander 2011-04-21 21:34:38

+0

温度的内容是什么?我知道这是addressArray的第一项,但AddressArray的内容是什么? – alexy13 2011-04-21 21:51:57

回答

2

如果执行得给你说行,连接最有可能的问题是,第一项在地址数组中仍然不正确地解除分配,而仍然是数组的一部分。由于数组不检查以确保它包含的对象是有效的,它将返回一个指向可用内存的指针。当你尝试访问这个内存时,它崩溃了。你可以尝试在环境中运行NSZombiesEnabled = YES。如果我是正确的,你会得到一个错误信息记录到控制台。

+0

addressArray是一个属性,它不是假设2作为类的全局变量吗? – 2011-04-21 22:00:04

+0

属性只能通过该类的实例访问,而不能通过类本身访问。问题不在于数组已经被释放,而是数组里的东西*已经被释放。 – ughoavgfhw 2011-04-21 22:05:03

+0

谢谢,但我怎么能看看阵列内部或防止它被释放? – 2011-04-25 13:01:51