Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Xcode解决方案组织的最佳实践和指导方针是什么?_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone Xcode解决方案组织的最佳实践和指导方针是什么?

Iphone Xcode解决方案组织的最佳实践和指导方针是什么?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,对于如何在xcode中组织解决方案,有什么最佳实践吗 这是我此刻的本源: 每个第三方框架的文件夹,例如KissXML 用于我的单元测试的文件夹 框架、产品和资源的文件夹 MyApp的文件夹,其中包含模型、视图、控制器、数据库、支持文件和域的子文件夹 我的目标是: Main application Model Singletons Helper+managers Controllers // I keep nibs with their respective

对于如何在xcode中组织解决方案,有什么最佳实践吗

这是我此刻的本源:

  • 每个第三方框架的文件夹,例如KissXML
  • 用于我的单元测试的文件夹
  • 框架、产品和资源的文件夹
  • MyApp的文件夹,其中包含模型、视图、控制器、数据库、支持文件和域的子文件夹
    • 我的目标是:

      Main application
          Model
          Singletons
          Helper+managers
          Controllers    // I keep nibs with their respective class files
          View
          Resources
              images
              plists
              //  ... groups from other types of resources if needed
          Supporting files
      Unit tests
      Frameworks
      
      对于iOS上的可重用代码,我使用静态库,并将它们作为单独的项目添加到Xcode工作区中。即使对于第三方代码,如果没有静态库目标,我也会创建一个。这样,我对待第三方代码的方式与对待自己的库代码的方式相同。此外,我不必担心第三方代码的版本控制


      我发现让Xcode镜像代码的文件系统组织很重要,至少在某种程度上是如此。我在阅读后采用了这种做法。不过,在我上面列出的级别之下,我不会这样做。例如,当您在github上共享代码时,这会有所帮助。与其让下载者或贡献者将所有源代码挖掘到一个目录中,不如将其组织到功能性的存储桶中。我见过一些项目,其中Xcode组织是可以的,但是文件系统中的每个源文件都被转储到一个目录中。

      虽然没有任何特定的方法可以避免缺点,但下面是我们使用的方法

    • 应用程序核心或模型的文件夹。这包括的子文件夹 专用模型使用的任何第三方库和文件夹 上课。例如,将有一个用于处理web服务的文件夹

    • 一个主要模块的文件夹,包括每个模块的子文件夹 包含类文件、NIB和资源的屏幕(可能包括 根据需要提供更多子文件夹)

    • 第二个主要模块的文件夹等

    • 这种模式有一个主要目的。我们的应用程序核心包含日志记录、数据加密/解密等内容,因此对于我们开发的许多应用程序来说,它不太可能被更改。同样,也会有一些应用程序需要主要模块1的功能,并添加一些其他东西。因此,这三个文件夹组在subversion上作为单独的存储库进行维护

      现在,当我们启动一个新项目时,我们将为该项目创建一个新的存储库,并根据需要将其与应用程序核心存储库和其他主要模块存储库链接。所以,一个项目团队在应用程序核心中所做的任何更改,都会反映在其他项目中。与其他主要模块相同。这也有助于我们实现完全的模块化

      当然,这项计划会有缺点,但多年来,这项计划一直非常适合我们:)