をリリース私は、コードのこの部分ました:スウィフト動的な型デバッグ/
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
'(NotObjectとしてNotificationsController.classNotifier).foo()'を試したことがありますか? –
プロトコルでfooを作成しようとしましたか?静的なfunc fooのような静的には気付きますか? – Suen