我想在扩展程序中添加默认实现:
import UIKit
protocol Animator: UIViewControllerAnimatedTransitioning {}
extension Animator {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.33
}
}
但编译时我遇到一个奇怪的错误:
命令因信号失败:分段错误:11
和非常长的堆栈转储。
答案 0 :(得分:0)
我想在扩展程序
中添加默认实现
你不能。 Objective-C无法看到Swift协议扩展,所以你的默认实现"永远不会被召唤。
答案 1 :(得分:0)
恭喜,你崩溃了编译器。 (这就是故障11的含义。)
您的Animator类需要从NSObject派生,以便它可以符合UIViewControllerAnimatedTransitioning协议。
这有效:
import UIKit
class Animator: NSObject {
}
extension Animator: UIViewControllerAnimatedTransitioning {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.33
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
}
}