objective-c - NSString.length 给出 EXC_BAD_ACCESS

标签 objective-c cocoa 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]);
}

我在 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/

相关文章:

iphone - 如何将 UIWebView 内容调整为特定尺寸?

ios - NSString 的 NSMutableArray 的错误?

ios - 从本地联系人复制号码会产生奇怪的结果

objective-c - 在不调用 presentViewController(或 dismissViewController)的情况下呈现 View Controller

objective-c - iOS 模拟器运行动画的效率是否较低?

iphone - iOS - 如何在处理该单元格中的按钮事件时访问自定义单元格?

iphone - 计算器程序中的断言失败

iOS 奇怪地读取一些字符?

ios - 如何根据索引从数据结构中获取特定对象

ios - Apple 审核时 CloudKit 无法正常工作