繁体   English   中英

Swift中UIKit协议的扩展

[英]Extension for UIKit protocol in Swift

我想在扩展中添加默认实现:

import UIKit

protocol Animator: UIViewControllerAnimatedTransitioning {}

extension Animator {

    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return 0.33
    }
}

但是我在编译时有一个奇怪的错误:

命令由于信号失败:分段错误:11

和非常长的堆栈转储。

我想在扩展中添加默认实现

你不能 Objective-C无法看到Swift协议扩展,因此永远不会调用您的“默认实现”。

恭喜,您使编译器崩溃了。 (这就是段错误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) {

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM