Cocoa touch UITableView和搜索栏问题

Cocoa touch UITableView和搜索栏问题,cocoa-touch,uitableview,iphone-sdk-3.0,uisearchbar,uisearchdisplaycontroller,Cocoa Touch,Uitableview,Iphone Sdk 3.0,Uisearchbar,Uisearchdisplaycontroller,我正在尝试向UITableView添加搜索栏。我遵循了以下教程: 如果我在搜索框中键入一个字母,就会出现此错误:Rooster(10787,0xa05ed4e0)malloc:**object 0x3b5f160的错误:double free ***在malloc\u error\u break中设置断点以进行调试 此错误发生在以下位置: - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldR

我正在尝试向UITableView添加搜索栏。我遵循了以下教程:

如果我在搜索框中键入一个字母,就会出现此错误:
Rooster(10787,0xa05ed4e0)malloc:**object 0x3b5f160的错误:double free
***在malloc\u error\u break中设置断点以进行调试

此错误发生在以下位置:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
    [self handleSearchForTerm:searchString];

    return YES;
}
(在第二行)

有人能帮我吗

问候,,
Dodo

双重自由错误意味着您释放的对象超出了需要。这里可疑的物体是klasString。 从您的代码:

NSString *klasString = [[NSString alloc] init];
...
if(i != -1) {
    klasString = [klassenList objectAtIndex:(i - 1)];
}
...
[klasString release];
if语句中的赋值

  • 丢失对新分配的NSString的引用,导致内存泄漏
  • 使以后的版本应用于klassenList中的对象。当klassenList释放其元素时,将发生双重自由错误

  • 谢谢在if语句中,我添加了一个retain!
    NSString *klasString = [[NSString alloc] init];
    ...
    if(i != -1) {
        klasString = [klassenList objectAtIndex:(i - 1)];
    }
    ...
    [klasString release];