NSString 失败,应用程序崩溃尝试 NSLog NSError

Posted

技术标签:

【中文标题】NSString 失败,应用程序崩溃尝试 NSLog NSError【英文标题】:NSString fails, app crashes trying to NSLog the NSError 【发布时间】:2010-07-11 08:05:54 【问题描述】:

罐头上写着什么。我要做的就是将 NSString 保存到我的 Documents 目录中的 .txt 文件中,以便用户可以访问它。这在 applicationWillTerminate 中调用:

NSError* err;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// the path to write file
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"TheFile.txt"];
BOOL success = [[textView text] writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&err];
if (!success) 
     NSLog(@"Error: %@ %@", err, [err userInfo]);

在我的情况下,成功返回为 NO,并且我的应用程序在 NSLog 行上崩溃 (EXC_BAD_ACCESS)。有什么想法吗?

【问题讨论】:

【参考方案1】:

如果textView(或[textView text])为nil,则success将为NO,但err将未初始化。这是在这里崩溃的唯一可能方式。

尝试设置NSError* err = nil;

【讨论】:

谢谢!它是一个空文本视图和一个未初始化的 NSError 的组合。【参考方案2】:

我相信您应该检查 error 对象,而不是 success 布尔值。毕竟 - 这就是为什么你要传递它的地址来进行写操作。

if (error) 
     NSLog(@"Error: %@", err);

您可能还想检查[textView text] 是否返回nil,以及textView 本身是否不是nil

【讨论】:

以上是关于NSString 失败,应用程序崩溃尝试 NSLog NSError的主要内容,如果未能解决你的问题,请参考以下文章

测试飞行应用程序因 libAVFAudio.dylib 崩溃:AVAE_RaiseException(NSString*, ...) + 60

NSString 到 C 风格的 char 数组在第二次调用 drawRect 时崩溃

NSPredicate 与 NSString 发生奇怪的崩溃

使用 OCMock 发生意外崩溃,在 NSString 上模拟“mutableCopy”

Core Data 在看似正常的 NSString 字段上崩溃

尝试解析 json 会使应用程序崩溃