将 Objective-C AppDelegate 类别 Class 转换为 Swift Class
Converting An Objective-C AppDelegate Category Class To A Swift Class
我们有一个用 Cordova 构建的项目。但是我们在 Swift 中编写了很多代码。由于许多 Xcode Bridging Header 错误太长而无法进入,我们需要将 AppDelegate.m 重写为 Swift.
一切顺利。
有一个 Cordova 插件
这个插件让我们安装另一个 AppDelegate 类型的文件。
其头文件的顶部如下:
@implementation AppDelegate (notification)
Swift 中没有类别,有扩展。我的问题是:将此文件转换为 Swift 时,我应该只删除此文件,并将其扩展名添加到现有的 AppDelegate 文件中,还是创建一个 AppDelegate+notification.swift class然后写?
extension AppDelegate {
//code
}
基本上我有点困惑为什么会有一个单独的文件来为 AppDelegate 添加功能。他们为什么不首先 'extend' 它,现在我不确定如何将此 AppDelegate+notification.m 文件转换为 Swift.
更新
我删除了main.m文件,AppDelegate.m/.h,AppDelegate+notification.m/.h文件,并转换成对应的SwiftAppDelegate文件在一个新的 AppDelegate.swift 文件中,它起作用了。
swift 中的扩展类似于 Objective-c 中的类别。您可以在扩展中添加更多方法、自定义 init ...。
要向 AppDelegate 添加扩展,我们不必创建 AppDelegate+notification.swift,但您可以在 AppDelegate.swift 文件中添加扩展 AppDelegate 部分。请注意,扩展在 Objective-C 中没有名称作为类别。但是当然,你可以创建多个 AppDelegate 扩展,给它一个 //MARK: 来区分
//MARK: extension Hello
extension AppDelegate {
func sayHello() {
NSLog("hello")
}
}
//MARK: extension goodbye
extension AppDelegate {
func sayGoodbye() {
NSLog("goodbye")
}
}
我们有一个用 Cordova 构建的项目。但是我们在 Swift 中编写了很多代码。由于许多 Xcode Bridging Header 错误太长而无法进入,我们需要将 AppDelegate.m 重写为 Swift.
一切顺利。
有一个 Cordova 插件这个插件让我们安装另一个 AppDelegate 类型的文件。
其头文件的顶部如下:
@implementation AppDelegate (notification)
Swift 中没有类别,有扩展。我的问题是:将此文件转换为 Swift 时,我应该只删除此文件,并将其扩展名添加到现有的 AppDelegate 文件中,还是创建一个 AppDelegate+notification.swift class然后写?
extension AppDelegate {
//code
}
基本上我有点困惑为什么会有一个单独的文件来为 AppDelegate 添加功能。他们为什么不首先 'extend' 它,现在我不确定如何将此 AppDelegate+notification.m 文件转换为 Swift.
更新
我删除了main.m文件,AppDelegate.m/.h,AppDelegate+notification.m/.h文件,并转换成对应的SwiftAppDelegate文件在一个新的 AppDelegate.swift 文件中,它起作用了。
swift 中的扩展类似于 Objective-c 中的类别。您可以在扩展中添加更多方法、自定义 init ...。
要向 AppDelegate 添加扩展,我们不必创建 AppDelegate+notification.swift,但您可以在 AppDelegate.swift 文件中添加扩展 AppDelegate 部分。请注意,扩展在 Objective-C 中没有名称作为类别。但是当然,你可以创建多个 AppDelegate 扩展,给它一个 //MARK: 来区分
//MARK: extension Hello
extension AppDelegate {
func sayHello() {
NSLog("hello")
}
}
//MARK: extension goodbye
extension AppDelegate {
func sayGoodbye() {
NSLog("goodbye")
}
}