我有以下代码:
NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
NSString *temp;
for (int i = 0; i < [array count]; i++)
{
temp = [array objectAtIndex:i];
NSLog(@"temp length = %@", [temp length]);
}
我在 NSLog 行收到 EXC_BAD_ACCESS 错误。我认为它在 [temp length] 位处出错。奇怪的是,我可以在 temp 上执行 NSString 的其他方法,并且它们工作正常,例如 [temp characterAtIndex:0]
。
我也尝试过执行[[array objectAtIndex:i]retain];
,但这似乎没有帮助。
有谁知道为什么我会收到此错误?
<小时/>编辑:事实证明它在 NSLog 处崩溃,因为它是 %@ 而不是 %lu。真正的问题是我在这篇文章中省略的其他代码。经过一番尝试后,我成功了。
最佳答案
根据我的理解,“%@”占位符用于对象指针,“length”返回“NSUInteger”,它不是指针。尝试使用“%lu”而不是“%@”。
关于objective-c - NSString.length 给出 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863492/