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”