【问题标题】:Calling objective-c method from Swift error从 Swift 错误中调用 Objective-C 方法
【发布时间】:2016-09-13 18:04:04
【问题描述】:

当我尝试从 swift 调用objective-c 方法时出现错误。 我的 Objective-c .h 类:

@class myType;
@interface myClass : NSObject
- (myType *)myMethod;

然后我将创建一个 myClass 形式的对象并尝试在 swift 中调用 myMethod(我已声明 myClass 类型的 anObject):

let a = anObject.myMethod();

但我得到一个错误: “myClass”类型的值没有成员“myMethod” 如果我将 myType 更改为其他内容,错误就会消失。所以应该是swift不能识别myType的问题..

感谢您的帮助

【问题讨论】:

  • @class myType; 还不够,Swift 需要知道那个类的接口。
  • 你能举个例子吗?
  • 包含@interface myType .... @end的头文件必须包含在桥接头文件中。
  • 谢谢...我将 myType 标头引用添加到我的桥接类中,它可以工作。如果您将其添加为答案,我会将您的答案标记为正确

标签: objective-c swift


【解决方案1】:
@class myType;

只是该类的“前向声明”。为了调用

- (myType *)myMethod;

Objective-C 或 Swift 的方法,编译器需要知道 该类的实际接口声明。所以“myType.h”或其他 文件包含

@interface myType : NSObject
// ...
@end

必须包含在桥接头文件中。

备注:类名应以大写字母开头。

【讨论】:

    【解决方案2】:

    原来对我来说真正的问题是别的! 我不得不简单地删除派生数据:

    • 窗口 -> 项目 -> 派生数据 -> 删除
    • 清理项目
    • 退出 Xcode
    • 打开 Xcode
    • 构建项目

    显然,使用 swift 我必须更频繁地执行这些步骤..

    【讨论】:

    • 遇到同样的问题,清理派生数据,退出我的 xcode,仍然是同样的错误。在我的情况下,我可以看到我调用 objc 方法的快速调用存在于导入模块中,但仍然没有构建:“MyPrint”类型的值没有成员“createLayout”
    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多