ios - Objective C 类找不到 Swift 协议(protocol)的定义

标签 ios objective-c swift

我有一个 Swift 协议(protocol),像这样:

@objc protocol Linkable {
    func presentLink(link: MyLink)
}

我还有一个 Objective-C 类,它不适合这个协议(protocol):

@protocol Linkable;

@interface MyDetailViewController : MyTableViewController <Linkable>

etc...

据我所知,我已经正确地声明了该协议(protocol),该协议(protocol)具有 @objc 符号,并且我将其放入 Objective C 类的接口(interface)声明中,但是我'我仍然在 @interface 开头的行收到警告。

警告说:“找不到‘Linkable’的协议(protocol)定义。”

奇怪的是,它构建并运行,并且按预期工作,但如果 Linkable 实际上没有问题,为什么会出现警告?是否有不同的方式来声明协议(protocol)或遵守协议(protocol)以清除警告?

这是否只是 Xcode 中措辞不当的警告之一?如果是,实际发生了什么?

编辑

这是一个自包含的示例项目,它有同样的错误:https://github.com/thinkfishhook/Swift-ObjC_Protocol

最佳答案

#import "ViewController.h"
#import "Protocol_WTF-Swift.h"

@interface ViewController () <MyProtocol>

@end

@implementation ViewController

- (void)doTheThings {
  // doing the things
}

@end

关于ios - Objective C 类找不到 Swift 协议(protocol)的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541457/

相关文章:

ios - 如何处理 iOS Swift 中的 CoreData 崩溃?

ios - 如何填充 UITableView 部分标题?

ios - 无法推断复杂的闭包返回类型 SwiftUI ForEach

swift - 当搜索数据加载到 tableView 中时如何停止 Firestore 分页

ios - 如何设置滑动标签栏的y位置稍微向下

ios - 如何在 Swift 的 TableViewController 中向自动后退按钮添加 Action

iphone - 将文件从 iphone 上传到 Web 服务器

iphone - [self.window addSubview :[_viewController view]]; moving the view up in lower version of iphone

objective-c - 带有 FMDatabase 包装器的 SQLite 数据库

swift - 从后台搜索 attributeString 中的单词并获取范围 Swift