1

我正在使用 Xcode 在 Objective-C 中编写程序。我的程序创建一个文件如下:

[@"" writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:NULL];

我希望将文件创建在与可执行文件相同的目录中。当我从 Xcode 运行程序时,该文件按预期在调试目录中创建。

但是,当我运行 .app 文件时,该文件是在根目录中创建的。如何让程序在 .app 文件所在的目录中创建文件。

非常感谢。

编辑:这是一个 MacOS 应用程序

EDIT2:好吧,看来我不应该写入 .app 目录。谢谢bbum和Paul R。正确的方法是什么?更具体地说,这就是我正在做的事情:每次用户单击应用程序中的按钮时,连接到串行端口的一块硬件将发送一堆数据,这些数据将被写入一个新文件。这可能在应用程序运行时发生任意次数,因此可能会创建大量文件。我希望它们都在同一个文件夹中创建。

4

2 回答 2

2

您绝不能对应用程序的初始工作目录做出任何假设,因为这将取决于启动它所使用的方法(例如 Finder、终端(通过open)、Xcode、gdb、第三方实用程序等)。您应该使用适当的 API 来找到合适的目录来存储临时文件或用户特定文件或您需要做的任何事情。这不应该在应用程序的包中,也不应该在相对于初始工作目录的路径中。

于 2011-02-16T19:34:22.390 回答
1

希望在.app包装器内创建文件。那永远不是正确的答案;YourApp.app您的应用程序可能很容易安装在当前用户对包装器没有写访问权的地方。

(例如,我的主要用户帐户是非管理员,并且所有应用程序都是以管理员写入方式安装的。如果某个应用程序由于无法写入其应用程序包装器而无法运行,则该应用程序将进入垃圾箱。)

有关文件应存储在何处的概要,请参阅此问题。取决于文件的作用。

于 2011-02-16T18:46:27.323 回答