当我使用stringByReplacingOccurrencesOfString时,应用程序崩溃了

时间:2010-11-14 20:04:31

标签: iphone objective-c

这是控制台中给出的错误。我正在搜索一个术语并用“+”替换“”,所以它进入URL确定,然后根据该搜索词获取RSS提要,这很好但是当我按下工具栏上的刷新按钮时,它崩溃时出现此错误:

 -[UITableViewCellLayoutManagerSubtitle stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x5b67be0

2010-11-14 19:58:01.325 Example[63210:1903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellLayoutManagerSubtitle stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x5b67be0'

这实际上是我的代码:terms = [terms stringByReplacingOccurrencesOfString:@" " withString:@"+"];

2 个答案:

答案 0 :(得分:1)

terms过早被释放,很可能是因为你没有正确地保留它。巧合的是,UITableViewCellLayoutManagerSubtitle的一个实例随后被分配到terms指向导致无法识别的方法异常的地址。

使用Instruments中的Zombie检测来查找问题。

此外,使用“构建和分析”,因为llvm静态分析器很可能会识别问题。

答案 1 :(得分:0)

有可能提前释放terms并且在同一内存地址分配UITableViewCellLayoutManagerSubtitle。检查您的retain / release / autorelease命令是否正确。