【问题标题】:Why can't I access objective-c methods even though file is in bridge?为什么即使文件在桥中,我也无法访问 Objective-C 方法?
【发布时间】:2019-09-29 20:01:20
【问题描述】:

我有一个包含大量objective-c 代码的项目。现在我想在我的 swift 文件中访问该代码。但是由于某种原因,即使我可以启动该类的对象,我也无法访问 objective-c 方法。

我有一个bridge-file,其中添加了所有.h 文件,名为projectName-Bridge-Header.h

#import "NumberVerificationViewController.h"

它的路径被添加到build-settings 中(一个附带问题:即使没有将桥路径添加到build-settings,我也可以从一个类中启动一个对象。为什么会这样?):

我可以从类中初始化一个对象,但我无法访问该方法:

var num = NumberVerificationViewController()
num.numberVerificationCallCompleted

最后一行给出了方法不存在的错误。

我是objective-c 的新手,所以这可能非常简单。不过,这超出了我的范围。

【问题讨论】:

  • 请发布代码,而不是截图,以及完整的错误信息。
  • numberVerificationCallCompleted 是否暴露在 .h 文件中
  • 至少在.h文件中,必须添加方法签名才能公开。

标签: objective-c swift xcode objective-c-swift-bridge


【解决方案1】:

乍一看,您可能缺少 .h 文件中的声明以公开该方法。

NumberVerificationViewController.h
-(void)numberVerificationCallCompleted:(NSNumber*)responseNumber;

NumberVerificationViewController.m
-(void)numberVerificationCallCompleted:(NSNumber*)responseNumber {
    ...
}

【讨论】:

  • 是的,当然!谢谢,完全忘记了检查。我责怪对objective-c 不熟悉,哈哈。再次感谢您抽出宝贵时间! :)
  • 至于附带问题:知道为什么我不需要添加桥接位置来构建设置。不做也可以,但是我遇到的每个教程都说我必须添加它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多