gpt4 book ai didi

iphone - 检查 NSString 崩溃的子字符串

转载 作者:太空狗 更新时间:2023-10-30 03:49:07 26 4
gpt4 key购买 nike

我尝试用两种方法检查 NSString 中是否出现子字符串,但都失败了。这是我从我的 NSManagedObject 的属性之一获得的 NSString 对象。

  1. 使用 NSRange

    NSString *searchString = @"drive";

    NSRange range = [text rangeOfString:searchString options:(NSCaseInsensitiveSearch)];



    if (range.location != NSNotFound) {
    NSLog(@"找到");
    }

  2. 使用 NSScanner

    NSScanner *scanner = [NSScanner scannerWithString:text];



    NSLog(@"%d",[scanner scanString:searchString intoString:nil]);

当 text = @"drive"时,这两种方法都有效,但当文本为 "i drive"或 "drive to"时,会导致 EXC_BAD_ACCESS 崩溃。如果文本是“idrive”或“driveto”,什么也不会发生。

更奇怪的是,有时示例会抛出 NSInvalidArgumentExceptions,说我试图将 NSCFSet 或 DateComponents 对象传递给 rangeOfString:,我在我的应用程序中都没有使用它们。

有什么想法吗?

最佳答案

如果您有时收到 EXC_BAD_ACCESS 并且有时收到消息“您不期望的类型对象没有响应方法”很可能你没有保留对象足够长的时间,并且在你到达你使用它的地方之前它就被释放了。

如果当你到达那里时内存还没有被重用,事情似乎会起作用。如果该空间已被另一个对象重用并完美对齐,即相同的指针,您将得到类似“x 不响应选择器”的信息。如果它以指针未指向有效对象的方式被覆盖,您将得到 EXC_BAD_ACCESS

关于iphone - 检查 NSString 崩溃的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com