【问题标题】:Implement Objective c protocol in Swift在 Swift 中实现 Objective c 协议
【发布时间】:2015-01-01 09:37:40
【问题描述】:

我在目标 c 类中有这个协议:

@protocol YTManagerDelegate <NSObject>
@required
- (void)uploadProgressPercentage:(int)percentage;
@end
...

还有一个与之相连的 swift 类:

class YTShare: UIViewController, YTManagerDelegate{

    func uploadProgressPercentage(percentage:Int?){
        println(percentage)
    }
    ...

我收到错误:type YTShare 不符合协议 YTShareDelegate,我可能写错了 swift 函数,所以 obj 类找不到它。我怎样才能正确地写它?

【问题讨论】:

    标签: objective-c swift protocols


    【解决方案1】:

    委托方法有两个错误

    func uploadProgressPercentage(percentage:Int?){
        println(percentage)
    }
    

    参数不能是可选的,C类型int映射到Swift 作为CIntInt32 的别名):

    func uploadProgressPercentage(percentage:CInt){
        println(percentage)
    }
    

    或者,您可以在 Objective-C 协议中使用NSInteger,即 映射到 Swift 中的Int。这将是一个 32 位或 64 位整数,具体取决于 在架构上,而 int/CInt 始终是 32 位的。

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多