在 Xcode 中,"app" 项目和"framework"项目有什么区别?



我正在做一个SwiftUI项目,它最初是创建一个新项目作为一个"应用程序";(Xcode,点击文件,新建,项目,点击"应用"),但后来被要求把它作为一个框架放入一个pod中。我成功地做到了(Xcode,点击文件,新项目,点击框架),但是我不确定有什么不同,我不确定为什么我想这样做。对我来说,它们看起来非常相似,除了我无法在模拟器中启动我的项目作为框架。幸运的是,SwiftUI提供了画布预览窗口,但是当涉及到某些按钮交互时,它有点挑剔,这就是为什么我想使用模拟器。

两处混淆:

  • 应用程序和框架项目之间的区别是什么?
  • 为什么将我的项目作为框架更有利?

App是一个可以启动和运行的独立应用程序。例如,你手机上的所有应用程序都只是应用程序。你点击它们,它们就会启动并运行,呈现用户界面,接受输入等等。

框架完全是另一回事。它是一个代码集合,被捆绑到一个包中,由另一个框架或应用程序使用。一些框架是由系统提供的——例如,SwiftUI是一个框架,听起来像你在你的应用程序中使用。其他框架是由第三方提供的。例如,你可以通过CocoaPods或Swift包管理器找到许多框架——Alamofire就是一个常见的例子。同样,你也可以创建自己的框架,并在自己的代码中使用它们,作为一种组织和职责分离的形式。

为什么将我的项目作为框架更有利?

它不是——它们是两个几乎完全不同的概念(除了它们最终都是代码和资源的集合)。如果你想构建一个可以在别人的设备上启动的应用程序,你唯一的选择就是制作一个应用程序。如果你想制作一个可重用代码的集合,供你或别人的应用程序使用,那么你就需要制作一个框架。

@jnpdx的回答很好(并且被点赞)。让我给你一个实际的例子:

(1)在Xcode中创建一个项目,它是一个框架。叫它"myappkit"吧。在它内部,基本上可以创建任何东西——ViewUIView,或者更可能是由几个视图共享的函数。(就这么办吧。)
public func setLoginName(_ login:String) -> String {
return ""Hello, " + login + "!";
}

相当简单。调用它,传入一些东西,它会返回一个字符串,表示hello。请注意public片。它很重要。(而且还有更多。这是一个简单的例子

(2)现在我们来看看你的一个或多个应用。假设你有两个应用程序需要使用非常简单的)的代码。一个是SwiftUI,一个是UIKit。(除了语法之外,这无关紧要。)因为我的强项是UIKit,我会用它。(也可以是几十个应用程序。)

import MyAppKit
let myLoginMessage = setLoginName("World").

差不多,它是"Hello, World!'

这又是一个毫无意义的例子。但它应该让你开始了解Xcode中框架项目和App项目之间的区别。

最新更新