【问题标题】:Is there anywhere to view iOS source code? [closed]有什么地方可以查看iOS源代码吗? [关闭]
【发布时间】:2013-11-16 04:40:41
【问题描述】:

所以iOS docs 只是描述了所有提供的框架的功能,但是我是否可以在任何地方实际查看代码以了解此功能是如何实现的?

它以二进制形式提供,因此所有清晰导入的都是标题。我只是厌倦了阅读有关“用这个来做那个”和“看看这个功能”的教程,而它们背后没有任何我可以看到的真实内容

【问题讨论】:

  • 不,Apple 不提供 iOS 的源代码。
  • 他们不这样做有什么原因吗?
  • 我相信他们有很多理由。一个更好的问题是你为什么认为你需要它?在 5 年多的 iOS 开发中,我从来不需要 iOS 的源代码来制作应用程序。
  • 我当然可以不用它,但是能够从设计它们的人那里看到对象所属的位置及其功能以及它们如何组合在一起,而不是到处乱插没有真正的保证他们在正确的地方做正确的事会为我提供如何实现所需功能的指导,你知道吗?

标签: ios objective-c methods frameworks documentation


【解决方案1】:

答案是否定的。

拥有特定公共 API 的全部意义在于隐藏底层框架/操作系统如何做的任何事情的细节。这至少有几个实际目的:

首先,它保护代码可能包含的任何 Apple 商业机密。

其次,它可以防止第 3 方程序员针对 API 的特定实现而不是 API 的公共合同进行编程。例如,假设在 UIKit 中有一个名为 UIWidget 的类。 UIWidget 的公共 API 说你可以给它一个数字(比方说一个 NSUInteger),它会根据这个数字显示一种颜色。公共 API 没有承诺它会选择什么颜色——只是对于给定的数字它总是相同的颜色。但是,您有 UIWidget 的源代码,并且可以看到它总是为偶数选择绿色,为奇数选择红色。然后,您基于 UIWidget 将始终为您提供偶数绿色的假设来实现您的整个应用程序,即使公共 API 从未承诺过。然后,Apple 发布了带有更新 UIWidget 的 iOS 12。公共 API 仍然说它将为您提供特定数字的特定颜色,但无论出于何种原因,Apple 决定更改实现,以便偶数显示蓝色。您的应用现在已损坏,因为您做出了不基于公共 API 合同的假设。

因此,虽然查看 iOS 源代码可能具有教育意义,但它不公开是有充分理由的。有大量的 iOS 应用程序源代码可以说明您想要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多