【问题标题】:objective-c - Swift classes are not visible in Objective-C .h fileobjective-c - Swift 类在 Objective-C .h 文件中不可见
【发布时间】:2015-03-30 10:47:45
【问题描述】:

我正在尝试在我的 Objective-C 文件中使用 Swift 类。 我在我的SuperViewController.m 文件中包含了"moduleName-Swift.h" 文件,但是当我尝试在SuperViewController.h 中声明一个以Swift-class 作为方法参数的公共方法时,我显然得到了一个错误:"Expected a type"

如果我只能在.m 文件中包含projectModule-Swift.h,我该如何在头文件中使用swift-class??

【问题讨论】:

  • 我觉得可以在swift类名前面设置@objc:(at)objc class myModel : NSObject{..}
  • 是的,我做到了,该类在 .m 文件中完全可见,但在 .h 文件中不可见。
  • 在你的 h 文件中使用 @class myModel 在你的导入下?
  • 是的,解决了它:) 如果你把它作为答案,我会接受它

标签: objective-c xcode cocoa-touch swift


【解决方案1】:

确保将@objc 放在swift 类名之前。

@objc myclassname { ... }

同时添加

@class myclassname;

在你的 obj-c 头文件中你想要访问 swift 类的地方

【讨论】:

  • with@ class 我得到 'Receiver 'XY' for class message is a forward declaration
  • 你好@Eyeball,你知道如何访问 Bool & Int 属性吗?!
【解决方案2】:

我遇到了同样的问题。在 obj-c .h 文件中添加 @class MyClassName 会创建“类消息的接收者 'MyClassName' 是前向声明”错误,所以我删除了它,只在 swift 类名之前添加了“@objc”,但我也有确保 swift 类是 NSObject 的子类。

@objc class MySwiftClass:NSObject { ... }

在 obj-c .h 文件中没有 @class MyClassName!

【讨论】:

    【解决方案3】:

    我不得不使用:

    @obj public class MySwiftClass: NSObject { ... }

    【讨论】:

      【解决方案4】:

      记得在你的源文件中导入项目生成的swift头文件,例如#import <MyProjectName-Swift.h>

      【讨论】:

        【解决方案5】:

        我创建了一个没有子类的类,添加@objc 和@objcmembers 不起作用。 在我更改 :NSObject 后,整个班级对目标 C 可见

        【讨论】:

          猜你喜欢
          • 2014-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-04
          • 1970-01-01
          • 1970-01-01
          • 2016-03-20
          • 1970-01-01
          相关资源
          最近更新 更多