Dav*_*ong 69

不,你在Swift中不需要类前缀,因为类被命名为它们所在的模块.

如果您需要消除(例如)ArraySwift和Array您在应用程序中声明的类/结构之间的歧义,可以通过将其键入为a Swift.Array或a来实现MyProject.Array.这也适用于扩展:

extension Swift.Array {
    ...
}

extension MyProject.Array {
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您导入到目标c,这会结转吗? (7认同)
  • 由于您使用`@objc`标签在导出时选择类名,我认为您应该同时执行这两个操作,因此在Swift中,SimpleAlert`变为`DRSimpleAlert` (2认同)

Bar*_*zyk 16

不,前缀绝对不是必需的.

假设您的应用有MyApp名称,您需要申报自定义UICollectionViewController.

不需要像这样的前缀和子类:

class MAUICollectionViewController: UICollectionViewController {}
Run Code Online (Sandbox Code Playgroud)

像这样做:

class UICollectionViewController {} //no error "invalid redeclaration o..."
Run Code Online (Sandbox Code Playgroud)

为什么?.因为您声明的内容是在当前模块中声明的,这是您当前的目标.并且UICollectionViewController从模块中UIKit声明UIKit.

如何在当前模块中使用它?

var customController = UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
Run Code Online (Sandbox Code Playgroud)

如何区别于其他模块?

var customController = MyApp.UICollectionViewController() //your custom class
var uikitController = UIKit.UICollectionViewController() //class from UIKit
Run Code Online (Sandbox Code Playgroud)

  • 它如何与 Objective-C 一起工作?例如,如果要在 ObjC 中创建此 Swift 子类的实例,您将调用:[UIViewController alloc] init]。 (2认同)