iphone - iOS项目目录组织

标签 iphone objective-c ios xcode

关于您如何为您创建的每个 iOS 应用安排 Xcode 4 目录的简单问题/意见。

就个人而言,我仍然添加一个名为/Resources 的目录,其中包含/Fonts、/Images、/Icons 等子目录。我使用选项“将项目复制到目标组的文件夹(如果需要)”。如果我需要添加一个新的资源,我只需将它添加到我项目目录中 finder.app 的正确目录中(即,如果它是一个图像,我将它添加到 MyProject/Resources/Images/Foo.png)然后我简单地继续我在 Xcode 中的组“图像”并从那里添加文件。

我曾尝试使用“文件夹引用”选项使 Xcode 和 Finder 保持同步,但 IB 无法获取图像...

此外,您的 Icon.png 和 Default.png 是否位于项目的根目录中? (即使用 .xcodeproj 文件?)当您使用 Xcode 4(在项目信息 > 摘要中)时,他们会将它们添加到那里......想知道您是否将它们保留在那里,因为就个人而言,我总是更喜欢将所有图像放在示例目录中!

关于 photoshop 文件或任何其他与您的项目相关的文件,您是否也将它们放在根目录中(同样是 .xcodeproj 文件)?

最佳答案

我建议将所有 .m 和 .h 以及 .xib 文件保存在一个文件夹中,因为它可以在您运行 ibtool 提取所有 NSLocalizedString 引用时简化字符串的本地化,并且还可以更轻松地在虚拟环境中移动文件重构项目时 Xcode 中的文件夹结构。

将第三方库或框架保存在单独的文件夹中,以避免将它们与您自己的代码混淆。

在 Xcode 本身中,我将这些类文件组织到单独的虚拟文件夹中,称为 Views、Controllers、Model 和 Nibs(以及用于第 3 方内容的库)。如果它是一个大型项目,我将它分解为每个组件的文件夹,然后将它们分解为 View 、 Controller 等,但同样这只是虚拟文件夹,而不是物理文件夹。

将资源保存在单独的物理文件夹中是个好主意,这样可以更轻松地在磁盘上浏览它们。将它们拆分为图像、声音、xml 等可能是有意义的。在 Xcode 中,您可能希望按组件或类别(界面、内容等)将它们分解为虚拟子文件夹,但我不建议在磁盘上这样做随着项目的增长,重构文件夹结构变得更加困难。

将所有图像保存在同一个文件夹中是一个非常好的主意,因为它可以避免您不小心将两个图像命名为相同的名称。如果您从不同位置导入两张具有相同名称的图像,Xcode 不会警告您,但是当它构建应用程序时,您最终只会随机选择其中之一。

您不必将 Default.png 和 Icon.png 保留在根目录中(甚至可以将它们称为 Default.png 和 Icon.png),但如果标准文件不在预期位置,Xcode 有时会感到困惑。

是的,无论您做什么,在导入图像时都不要尝试使用蓝色文件夹引用,否则您无法使用 imageNamed: 代码或在 Interface Builder 中访问它们。请改用黄色虚拟文件夹引用。基本上,蓝色文件夹会在构建应用程序时作为实际文件夹复制到应用程序包中,而黄色文件夹会被忽略,它们的内容会直接进入应用程序包的根目录。要访问蓝色文件夹中的内容,您需要在加载它们时在路径中包含蓝色文件夹名称,例如

NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png" inDirectory:@"nameOfBlueFolderInXcode"];
UIImage *image = [UIImage imageWithContentsOfFile:path];

关于iphone - iOS项目目录组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871917/

相关文章:

ios - MailCore无法登录Gmail : mailcore Code=19 "unknown error code"

iphone - 如何在没有 iPhone 的情况下测试响应式设计字体

ios - 在 iOS 应用程序中添加自动布局 subview 时高度错误

objective-c - 如何使用 OCMock 在不同的线程上正确 stub 方法?

ios - 我们是否总是需要在闭包中调用完成处理程序?

ios - 将文件写入 iCloud 驱动器错误域=NSCocoaErrorDomain 代码=256

iphone - 如何设置受密码保护的网站来测试 HTTP 身份验证质询?

iphone - 在 Safari 中打开 WebView

ios - UITableview 重复复选标记

ios - SpriteKit 物理不匹配图像