【发布时间】:2017-08-03 09:55:17
【问题描述】:
我有这段代码:
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
}
}
在调试模式下构建工作正常。
当我在发布模式下构建(用于归档)时,编译器说 AnyClass 没有一个名为“foo”的函数。
现在,我知道如果我删除发布优化构建作品,但我认为这是错误的解决方案。
其他解决方案?
【问题讨论】:
-
classNotifier返回一个Class但foo是一个实例方法,对吧?另外,我可能会将您的协议称为Notifiable。 -
你试过
(NotificationsController.classNotifier as AnyObject).foo()吗? -
你有没有试过让协议中的 foo 像 static func foo 一样通知静态?
-
不应该是
static var classNotifier: NotificableinNotificationsController
标签: ios swift compiler-optimization