【问题标题】:[_UITableViewSeparatorView rangeOfString:]: unrecognized selector sent to instance[_UITableViewSeparatorView rangeOfString:]:无法识别的选择器发送到实例
【发布时间】:2011-02-11 05:09:42
【问题描述】:

在表格中搜索时,我在执行以下代码时遇到问题。此代码在其他地方工作正常。但目前它给出了一个错误,因为

[_UITableViewSeparatorView rangeOfString:]: 无法识别的选择器发送到实例 0x6041790

以下是困扰我的代码。请让我知道那里的错误。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
  {
       [tableData removeAllObjects];// remove all data that belongs to previous search
       if([searchText isEqualToString:@""] || searchText==nil)
       {
            [displayTable reloadData];
            return;
       }
    NSInteger counter = 0;
       for(NSString *name in dataSource)
    {
            NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
            NSRange r = [name rangeOfString:searchText];
            if(r.location != NSNotFound)
            {
                if(r.location== 0)//that is we are checking only the start of the names.
                {
                    [tableData addObject:name];
                }
            }
            counter++;
            [pool release];
        }

    [displayTable reloadData];    }

提前致谢!!

期待您的回复。

谢谢

【问题讨论】:

    标签: iphone objective-c xcode memory-management runtime-error


    【解决方案1】:

    您似乎过度释放了存储在 dataSource 中的字符串。我会检查您使用/创建这些字符串的任何地方,以确保您释放它们的次数不会超过应有的次数。

    【讨论】:

    • 非常感谢!......我在编码时没有注意到......我错误地选择了它在初始化时自动释放
    【解决方案2】:

    这意味着字符串应该驻留在内存中的内存已被释放,并且该位置上还有另一个对象(在您的情况下为 _UITableViewSeparatorView)。确保您没有过度释放数组中的字符串

    您可以尝试在仪器中使用 NSZombiesEnabled 进行搜索:link

    【讨论】:

    • 非常感谢!......我在编码时没有注意到......我错误地选择了它在初始化时自动释放
    • 顺便说一句,这里不能接受多个答案......但感谢你的帮助拯救了我的一天!...... :)
    【解决方案3】:

    你在dataSource 中输入了什么?显然,它包含一个不是 NSString 的对象。

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 2012-07-24
      相关资源
      最近更新 更多