【发布时间】:2016-03-29 11:20:20
【问题描述】:
我想扩展UIApplicationDelegate 协议并为application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 方法提供默认实现。但是,我提供的默认实现不会被调用。
是否有可能扩展 UIApplicationDelegate 协议(与 UIApplication 是单例或协议方法是可选的有关),还是我做错了什么?
谢谢
AppDelegate.swift:
import UIKit
extension UIApplicationDelegate{
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
print("does not print anything on launch.")
return true
}
}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
}
【问题讨论】:
-
应用程序在创建时是 swift 还是 obj-c?这是您扩展程序中的所有代码吗?你有一个委托实例集,它实现了哪些功能?
-
想用这个来完成什么,我很好奇?我看不出给 appDelegate 一个默认实现的意义,因为只有 1 个 appDelegate。
-
@crashoverride777 我想开发一个可以在多个项目中使用 pod 的协议,它提供推送通知相关的功能(比如 UIPushNotificationDelegate)。我还想扩展 UIApplicationDelegate 协议,在实现者为 UIPushNotificationDelegate 时为 didRegisterForRemoteNotificationsWithDeviceToken 提供默认实现,并使用 UIPushNotificationDelegate 方法作为默认实现将设备令牌发送到服务器。
-
@Wain 我已经添加了整个 AppDelegate.swift 文件。从一开始它就是一个 Swift 应用程序。项目代码只包含对我的 AppDelegate 文件和 swift Single Page 应用程序模板附带的默认文件的更改。谢谢。
-
这听起来很有趣。我实际上无法回答您的问题,因为我还没有为 appDelegates 使用协议扩展,所以我不确定它是否真的有效或者您是否犯了错误。
标签: ios swift uiapplicationdelegate protocol-extension