我希望扩展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?
}发布于 2016-03-29 13:25:14
事实证明,您无法通过扩展为Objective协议提供默认实现。有关协议扩展限制的详细列表,请参阅下面的链接。
我们不能做的是:为Objective协议提供默认实现。
发布于 2017-10-09 13:20:10
我遇到了同样的问题,对于这个特定的文件,我返回到Objective来实现这个功能。
#import <UIKit/UIKit.h>
@interface NSObject (BasicMethods) <UIApplicationDelegate>
@end使用
#import "UIApplicationDelegate+BasicMethods.h"
@implementation NSObject (BasicMethods)
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSLog(@"I'm getting called");
}
@end很管用。
发布于 2016-03-29 12:56:14
对协议进行扩展是没有用的。
原因如下:
https://stackoverflow.com/questions/36282835
复制相似问题