Objective-C找不到Swift协议

时间:2017-12-01 22:53:03

标签: objective-c swift migration swift-protocols

这个问题与this问题基本相同,但那个问题没有答案。

TL; DR:协议未显示在MyProject-Swift.h秘密桥接文件中。所以(不出意外)Obj-C代码找不到它。

我已经能够在一个从零开始的项目中复制它。这就是我做的。

  1. 创建新的单视图iOS Objective-C项目。
  2. 通过“新建文件”菜单添加新的Swift UIView子类。
  3. 确认已创建MyProject-Bridging-Header.h。 (,显)
  4. 确认已自动创建机密MyProject-Swift.h文件。 (DerivedData/.../DerivedSources)。
  5. 将此视图的实例添加到我的ViewController.m
  6. MyProject-Swift.h中加入ViewController.m文件。
  7. 成功构建 - 完整性检查
  8. 现在因为奇怪......

    1. 通过“新建文件”菜单添加Swift协议文件。
    2. ViewController符合并实施此协议。
    3. ViewController.m

      中的此位置构建失败

      #import "MyProject-Swift.h" @interface ViewController () <MyProtocol> // Can't find protocol declaration

    4. 检查MyProject-Swift.h文件确认协议不在那里。但是在一些大的预先存在的混合项目(构建)中,我没有在他们的 -Swift.h文件中看到任何协议。

      如何在Objective-C中识别Swift协议?

1 个答案:

答案 0 :(得分:0)

我为我的项目做了这个

在定义协议时,您可以在协议定义

之前添加@objc
@objc protocol NewViewControllerDelegate {

}

你已经完成了

注意:我认为@objc使得快速协议和类对目标c可见