如何在ObjC框架中使用Swift协议

3
我刚开始将Swift添加到我的ObjC框架项目中,因为它是相当新的,直接解决了与CloudKit之间的差距,因此可能有兴趣逐步迁移到Swift代码。
我想从简单的协议开始。 我做了以下几点: - 创建了一个Swift文件,并且正如您所知,对于框架没有桥接头文件 - 在该文件中添加了我的协议
现在我希望在我的类中使用它,但是怎么做呢? 类的解决方案很简单,只需定义前向声明。但是协议呢?
似乎这是我必须迁移的最后一个元素,或者您是否知道一种方法?
更新: 我忘记提到的是,我将协议标记为@objc,因为通常可以在ObjC中使用Swift协议,但我目前只看到了在框架中的限制。

在你的 Obj-C 实现(.m)文件中,你是否添加了 #import <##Your-Project-Name##>-Swift.h - Erik
1个回答

1
这是我的项目名称SwiftProtocol的一个示例:

Renderable.swift

@objc protocol Renderable
{
    @objc func render()
}

Triangle.h

#import "SwiftProtocol-Swift.h"    // This is very important!

@interface Triangle : NSObject <Renderable>

@end

Triangle.m

@implementation Triangle

- (void)render
{
   // Do some rendering
}

@end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接