NSString.length给出了EXC_BAD_ACCESS

Col*_*ole 1 cocoa objective-c nsstring

我有以下代码:

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]);
}
Run Code Online (Sandbox Code Playgroud)

我在NSLog行遇到EXC_BAD_ACCESS错误.我认为它在[temp length]位错误.奇怪的是,我可以在temp上做其他NSString方法,它们工作得很好,就像[temp characterAtIndex:0].

我也尝试过[[array objectAtIndex:i] retain];,但这似乎没有帮助.

有谁知道我为什么会收到这个错误?


编辑:原来它在NSLog崩溃,因为它是%@而不是%lu.真正的问题是我从这篇文章中省略的其他代码.在玩了一些之后,我开始工作了.

geo*_*org 9

根据我的理解,"%@"占位符用于对象指针,"length"返回"NSUInteger",它不是指针.尝试"%lu"而不是"%@".