【问题标题】:How do .swift files keep the 'privacy' which the .h and .m files did in Obj-C.swift 文件如何保持 .h 和 .m 文件在 Obj-C 中所做的“隐私”
【发布时间】:2016-07-10 11:05:31
【问题描述】:

我刚刚开始在 Xcode 中从 Obj-C 转向 Swift。

我的问题是关于替换 .h 和 .m 文件的新 .swift 文件。这个question 的答案部分告诉了我这些差异,但我仍然对新 .swift 文件的“隐私”问题感到困惑。

如果我在 Obj-C 中查找类的定义,我将只能查看包含类声明、其变量和方法的 .h 文件 (@interface)。我无法查看包含控制类如何工作的代码的 .m 文件 (@implementation)(我猜它们是私有的,可以防止其他人看到/可能抄袭您的代码)。

但是,在 Swift 中,似乎是这样的:

class NewClass: ParentClass {...}

一次性创建一个类,而不需要两个部分——@interface 和@implementation。但是当我在 Swift 中查找类的定义(比如 SKScene)时,方法的代码等仍然以某种方式保持私有......这是怎么做到的?

【问题讨论】:

标签: objective-c swift


【解决方案1】:

您只看到头文件(例如预编译的框架)的相同情况,对于 Swift,只会使接口可用。 Swift 文件本身不会包含在框架中。相反,Xcode 将生成对框架用户可见的伪接口文件。您获得属性定义和方法签名,但没有实现。

【讨论】:

  • 所以这一切都是自动为我完成的,我无需费心创建任何额外的东西?
  • 这是我的理解;要进行预览,请单击包含 Swift 文件的编辑视图左上角的四个方块,然后选择“生成的界面”。这就是将要发布的内容。切换回“原始来源”进行编辑。
  • 您通常在基础类等中看到的 cmets 怎么样(例如 SKScene 的定义)。是不是必须直接加进去?如果是这样,这不会使您的代码混乱吗? (在 Obj-C 中它不会因为 cmets 被添加到 .h 文件中)
  • 它们必须是内联的。如果您来自 Java,这完全正常,尽管您通常不会在 Java 中以这种方式查看文档。
  • 如今在 Xcode 托管的语言中远非异常。内联文档,通过 /*!或 /** 或通过其他方式自动解析并作为快速帮助普遍可用。例如。在任何方法定义上方添加/*! This method is cool. */。可能给 Xcode 足够的时间来索引。转到该方法的任何用法。按选项并单击。您的文档应该作为帮助气泡弹出。在 C、C++ 和 Objective-C 中,普通的 Java headerdoc 关键字——@param@returns 等——应该都可以工作;但在 Swift 中,您可以改为使用 - param 等,这样就可以正常使用 Mardown。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多