【问题标题】:.swift file name containing plus sign.swift 文件名包含加号
【发布时间】:2016-03-02 15:04:12
【问题描述】:

我打开了一个由 Apple 作为教程制作的 XCode 项目(“Auto Layout Cookbook”),发现两个文件的名称很奇怪:

  1. Recipe+Loading.swift
  2. Recipe+Storyboards.swift

两者都包含一个名为 Recipe 的扩展。我找不到任何关于这种命名的文档。

他们以这种方式命名文件有什么原因吗?

【问题讨论】:

  • 这只是ObjC时代命名类别的约定(“类别通常在单独的头文件中声明并在单独的源代码文件中实现。对于XYZPerson,您可以在名为 XYZPerson+XYZPersonNameDisplayAdditions.h.") developer.apple.com/library/ios/documentation/Cocoa/Conceptual/… 的头文件中声明类别
  • @Alladinian:谢谢!

标签: swift


【解决方案1】:

命名来自 Objective-C,其中类的每个扩展都需要一个名称。例如,Recipe 类可以有扩展名:

@interface Recipe (Loading)
@end

其中包含与“加载”相关的方法。 此类扩展名通常放入名为 Recipe+Loading.h 的文件中(即使用 Loading 方法扩展的类 Recipe)。

在 Swift 中,扩展没有名字,但旧习惯很难改掉。他们对文件使用相同的命名。

【讨论】:

  • 这也是一种避免命名冲突的方法吗?在同一目录下的这个项目中,有一个 Recipe.swift 包含一个 Recipe 结构,例如
  • @IanBell 如果您的意思是文件名冲突,那么可以。这是一种将实现拆分为多个文件的方法。
  • 有人知道这个命名约定是否会改变 swift 处理本地导入的方式吗?
【解决方案2】:

这是来自 Objective-C 的通用命名约定。正如您推测的那样,它基本上包含对Recipe 的扩展,分别与加载和故事板有关。它主要是一种将大型源文件或标签扩展分解为系统类(字符串、数组等)的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2012-06-13
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多