Ios 覆盖内置类成员函数的协议扩展

Ios 覆盖内置类成员函数的协议扩展,ios,swift,Ios,Swift,我正在尝试让我的应用程序代理,而不是调用自己的应用程序代理 protocol PushNotification { func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) } extension PushNotification where Self:AppDelegate { fun

我正在尝试让我的应用程序代理,而不是调用自己的应用程序代理

protocol PushNotification {
   func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings)
}

extension PushNotification where Self:AppDelegate {
func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
        print("Register for Push Notifications Successful")
    }
}
呼叫分机,但它似乎不工作? 这可能吗?在swift 2.3中?还是swift 3

预期行为

所以当我写作的时候

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings)
它应该叫

let notificationSettings = UIUserNotificationSettings(
            forTypes: [.Badge, .Sound, .Alert], categories: nil)
        application.registerUserNotificationSettings(notificationSettings)
        application.registerForRemoteNotifications()
它属于应用程序委托,我通常必须在应用程序委托中重写它

我希望它调用我的协议扩展。这是应用程序代理

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) 


协议的扩展提供了方法的默认实现。任何实现该方法的一致性类型也将覆盖扩展的实现。

协议扩展提供方法的默认实现。任何实现该方法的一致性类型也将覆盖扩展的实现。

您能否澄清正在发生的事情以及您希望发生的事情?因此,当我调用let notificationSettings=ui usernotificationsettings(对于类型:[.Badge、.Sound、.Alert],categories:nil)application.registerUserNotificationSettings(notificationSettings)application.registerForRemoteNotifications()它应该调用func应用程序(应用程序:UIApplication,didRegisterUserNotificationSettings notificationSettings:UIUserNotificationSettings)它属于应用程序委托,我通常必须在应用程序委托中重写它。但是我的协议扩展没有被调用。我需要理解一些东西吗?很抱歉,堆栈溢出没有按照我想要的方式运行。请稍等,你能澄清一下发生了什么,以及你希望发生什么吗?因此,当我调用let notificationSettings=UIUserNotificationSettings(forTypes:[.Badge、.Sound、.Alert],categories:nil)应用程序。registerUserNotificationSettings(notificationSettings)应用程序。registerForRemoteNotifications()它应该调用func应用程序(应用程序:UIApplication,didRegisterUserNotificationSettings notificationSettings:UIUserNotificationSettings)它属于应用程序委托,我通常必须在应用程序委托中重写它。但是我的协议扩展没有被调用。我需要理解其中的一些内容吗?很抱歉,堆栈溢出没有按照我想要的方式运行,请稍等片刻。是的,我理解,它会涵盖上述情况吗?我想让app delegate在哪里选择协议扩展实现?
AppDelegate
不选择任何内容。如果
AppDelegate
实现该方法,它将覆盖默认实现,这就是将被调用的内容。如果要使用默认实现,则不要在
AppDelegate
中实现对该方法的重写。我可以获取协议扩展来重写该函数吗?协议扩展不能“重写”方法,但它们可以提供默认实现,例如您已经拥有的。啊。。。那太糟糕了,我本来希望拆下一些锅炉板的是的,我明白,它能涵盖上述情况吗?我想让app delegate在哪里选择协议扩展实现?
AppDelegate
不选择任何内容。如果
AppDelegate
实现该方法,它将覆盖默认实现,这就是将被调用的内容。如果要使用默认实现,则不要在
AppDelegate
中实现对该方法的重写。我可以获取协议扩展来重写该函数吗?协议扩展不能“重写”方法,但它们可以提供默认实现,例如您已经拥有的。啊。。。好吧,那太糟糕了,我本来想把锅炉板拆下来的
class AppDelegate: UIResponder, UIApplicationDelegate, AWSDKDelegate, PushNotification {
// Could this function be called from my protocol extension instead?
// Rather than me overriding this function ?
  //    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
//        print("Register for Push Notifications Successful")
//    }
}