【问题标题】:How do Framework and Static Library differ for inversion of control in iOS?iOS 中控制反转的框架和静态库有何不同?
【发布时间】:2020-05-09 10:41:50
【问题描述】:

answers 的其中一个FrameworkStatic Library 上的问题中引用了yoAlex5

本质上是一组可以调用的函数,现在通常组织成类。每个调用都会做一些工作并将控制权返回给客户端。

框架体现了一些抽象设计,内置了更多行为。为了使用它,您需要通过子类化或插入您自己的类将您的行为插入到框架中的各个位置.然后,框架的代码会在这些点调用您的代码。程序的主要控制是倒置的,从你移到了框架。 (控制反转)

任何人都可以用最少的代码 sn-p 给出任何 iOS 示例,我可以理解 Static Library 不能支持控制反转,而 Framework 可以?

【问题讨论】:

  • 虽然赏金已经发放,但我仍在等待更好的答案。

标签: ios frameworks inversion-of-control static-libraries


【解决方案1】:

在您引用的问题的accepted answer 中,提到了以下内容:

因此在 iOS 上,您唯一的选择基本上是使用静态库或 静态框架(主要区别在于静态框架是 最常作为编译的 .a 文件分发,而静态库 可能只是作为子项目包含 - 你可以看到所有的代码 - 首先编译,其生成的 .a 文件用作依赖项 由项目)。

因此,iOS 上的主要区别实际上是通常以编译形式使用框架,而将库用作代码。因此,两者都原则上支持控制反转。

然而,即使框架可以提供的一切,也可以由库提供,我们应该明确地将某些功能限制在框架中。 Wiki says

框架具有将它们与 普通库:
• 控制反转:在框架中,不像在 库或标准用户应用程序中,整个程序的流程 控制权不是由调用者决定的,而是由框架决定的。

• 可扩展性:用户可以扩展框架——通常通过 选择性覆盖——或者程序员可以添加专门的用户代码到 提供特定的功能。
• 不可修改的框架代码: 一般来说,框架代码不应该被修改,而 接受用户实现的扩展。换句话说,用户可以 扩展框架,但不能修改其代码。

【讨论】:

  • 控制反转:在框架中,与库或标准用户应用程序不同,整个程序的控制流不是由调用者决定,而是由框架决定。我要求最小的例子来理解那个特定的陈述。一个带有伪代码的最小示例也可能会有所帮助。
  • 我对您的问题Could anyone please give any example for iOS with minimal code snippet where I can understand how Static Library cannot support inversion of control when a Framework can?的回答应该指出,静态库可以支持控制反转。所以没有这样的例子。
  • 为什么wiki在声明中添加了unlike in library这句话?我错过了什么?
  • 在我看来,框架通常具有控制反转。但由于在 iOS 中,框架和库之间的基本 实际 区别在于它是否预编译,因此 可能 在库中具有控制反转,但一个 >不应该。对不起,如果这有点不满意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2012-02-23
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多