我是这段代码:
class NotificationsController: NSObject {
static var classNotifier: AnyClass {
if #available(iOS 10, *) {
return UNUserNotificationCenter.classForCoder()
} else {
return UILocalNotification.classForCoder()
}
}
static func foo() {
NotificationsController.classNotifier.foo()
}
}
其中:
protocol Notificable: class {
static func foo()
}
extension UNUserNotificationCenter: Notificable {
static func foo() {
// do something
}
}
extension UILocalNotification: Notificable {
static func foo() {
// do something
}
}
在调试模式下构建工作正常 当我构建Release模式(用于存档)时,编译器说AnyClass没有一个名为" foo"的函数。
现在,我知道如果我删除版本优化构建工作,但我认为这将是错误的解决方案。
其他解决方案?
答案 0 :(得分:0)
一段时间后,我会对代码进行调查并重写您的解决方案。问题与protocol Notificable
和实例函数func foo()
有关。
您尝试将此函数称为类函数而不是实例1,并且存在问题。
工作解决方案的示例。
protocol Notificable: class {
static func foo()
}
extension UNUserNotificationCenter: Notificable {
internal static func foo() {
}
}
extension UILocalNotification: Notificable {
internal static func foo() {
}
}
class NotificationsController: NSObject {
static var classNotifier: AnyClass {
if #available(iOS 10, *) {
return UNUserNotificationCenter.classForCoder()
} else {
return UILocalNotification.classForCoder()
}
}
static func foo() {
classNotifier.foo()
}
}