【发布时间】:2011-09-24 09:20:19
【问题描述】:
我有一个运行 iOS 4.2.1 的 iPod touch 和一个运行 iOS 4.2 的模拟器。在模拟器中,我的代码运行良好,但在设备上,它崩溃了。
有问题的代码是:
FILE *file = fopen([[@"niplot/" stringByAppendingString:text_field.text] fileSystemRepresentation], "w");
...
fprintf(file, "%s", [print_str UTF8String]); //crash occurs here, EXC BAD ACCESS
...
fclose(file);
可能与不存在的文件或文件夹有关吗?在这种情况下,模拟器为我创建了它们。我会尝试在设备上手动创建文件和文件夹,但我不确定如何。另外,我尝试了带有和不带有 .txt 扩展名的文件名。
【问题讨论】:
-
只是出于好奇,为什么不使用本机文件处理机制?
-
什么原生文件处理机制?我找不到,而且我习惯使用 C 的文件 API。
-
问题不是你的 printf,而是
fopen,它是一个相对路径名,并且设备比模拟器更严格地沙盒化(两者的启动目录也可能不同) -
在 developer.apple.com 上有完整的 iphone/ipod 文件处理 API 列表(从这里开始:developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/…)
标签: ios xcode io ipod-touch