我有這段代碼:斯威夫特動態類型調試/發佈
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'。 – Edgar
你嘗試過'(NotificationsController.classNotifier as AnyObject).foo()'? –
您是否試圖在協議中使foo通過static來靜態func foo? – Suen