我来自java世界,在我的理解中,文件/类应该在包/文件夹中布置得很好。
Xcode4的最佳做法是什么?我还找不到Apple的指南。如果有人能把我推到正确的文件,我会很高兴。
如果没有文件:最好的做法是什么?我发现在一个项目文件夹中包含所有Classes有点奇怪 - 在Xcode视图或文件结构中(奇怪的是文件结构似乎不等于Xcode中的可视化结构)。当然,该项目将在版本控制上(在GitHub上)。
非常感谢提前!
答案 0 :(得分:9)
首先,我喜欢将消防控制器和相关类别的类别分组。但不仅仅是在XCode中创建的组中,也包括在真实文件夹中。因此,当创建一个组而不是在XCode中创建它时,首先在Finder中创建它,然后将该文件夹拖到XCode中并将其组成一个组。现在,当您在该组中添加新文件时,它们也将进入磁盘上的该文件夹。
其他一些随意的想法:
命名:由于您没有名称空间,因此必须在类前面加上两个或三个字母的前缀(Apple建议使用三个)。即使最初看起来很奇怪,也要这样做。
资源:默认项目喜欢将xib文件与视图控制器分开。在任何大小的应用程序中,我更喜欢将视图控制器和xib文件分组在一个位置。你甚至可以用这种方式制作图像,虽然通常只有一些地方可以将它们组合在一起更容易。
应用程序:我喜欢将所有其他应用程序特定文件(app delegate,info.plist,pch文件,main.m等)分组到列表顶部的一个Application组中,以使这些位易于使用找到。
答案 1 :(得分:7)
首先,看一下默认的项目结构。虽然它并不完美,但Xcode中有一些默认的“组”。使用这些作为一般准则。 (正如您所提到的,组不是文件系统文件夹,但是当您导入资源时,系统会提示您为文件夹创建组。)
虽然关于文件结构的官方约定并不多,但有些事情你可以做,就像我一样,去抓取组织痒。我在磁盘上的项目目录中创建了一些子文件夹。以下是其中一些:
音频:音频文件也可以获得自己的群组。
外部库:如果我要导入其他人的代码,我会创建一个名为“libraries”的组,然后为每个组创建一个子组。
图片:在那里,您可以根据需要创建子文件夹/子组。 (一个用于图标,一个用于主菜单等)
托管对象:当我在项目中使用Core Data时,我经常会通过Xcode的建模工具生成子类。我喜欢将它们保存在一个单独的组和一个单独的文件夹中。
查看控制器:根据项目的不同,我可能会对视图控制器进行不同的分组。例如,我可能会将所有“编辑”和“观众”保留在不同的组中。
最终,Groups可以让您的项目管理更轻松,文件夹可以让文件管理更轻松。这完全取决于你如何做到这一点。正如Bill Brasky指出的那样,在编译时,组织中没有一个真正有所作为。 (如果你想发疯,请看看Xcode 4中的“Build Phases”屏幕。复制阶段是你所有相关文件的混乱。)
答案 2 :(得分:2)
关于如何在XCode中组织项目,我没有遇到任何具体的做法/做法。我可能是错的,但我相信你自己创建的任何文件夹和布局都会在编译时完全被删除。
例如,如果你有一个嵌套在Resources / Images / Background / image.png中的图像,你仍然只引用.png文件名而不是文件夹结构。
我不得不说你仍然可以按照自己的意愿组织项目。借用java中的一些内容并将其列出最佳效果。
答案 3 :(得分:1)
这真的是你喜欢的。管理器不反映实际的文件结构。最后,源文件只是被编译成二进制文件,资源都被转储到应用程序包的“Resources”文件夹中。我只是扩展默认设置 - 我将资源放入资源文件夹,根据需要进行分组。在游戏中,我可能有图标,背景,精灵,音频和其他组。对于生产力应用程序,我可能只有纹理和图标。外部库和框架都进入了Frameworks组(我很少打扰组织这些,除非Dropbox SDK或GData等某些库已经整齐排列。通常它只是一个文件)。在Sources组中,我可以按功能视图进行分组,例如文档库,编辑视图或实用程序(用于文档编辑程序)或游戏的主菜单和游戏。对于较小的项目,我可以按控制器进行分组(如果需要,可以拆分为视图控制器和模型控制器),模型和视图。如果您来自Java项目,那么保留现有组织并没有错;实际上,默认情况下,当您添加到Xcode时,它将根据磁盘上的文件夹创建新组。
无论如何,最终捆绑包中的所有内容都会变得扁平化,您的组织对文件系统没有任何影响。使用项目所需的任何内容 - 不要像使用专业医疗应用程序或其他东西那样使用与俄罗斯方块克隆相同的结构。