为了账号安全,请及时绑定邮箱和手机立即绑定

从Objective-C类调用Swift函数

从Objective-C类调用Swift函数

PIPIONE 2019-12-27 09:32:31
我有一个旧的Objective-C项目,我想调用新的Swift函数和对象,我已经创建了文件“ <ProjectName>-Bridging-Header.h”和“ <ProjectName>-Swift.h”对我来说,从Swift调用函数到Objective-C很容易,但是我有一个反向问题。所以我创建了一个简单的类“ System.Swift”import Foundation@objc class System : NSObject {@objc func printSome() {    println("Print line System");    }}现在我尝试按照此处和<...>-Swift.h文件内的文档进行操作@class System;@interface System : NSObject-(void)printSome;@end并且已将其导入到Objective-C类中。此时,在我的Objective-C代码的Objective C类(当前为UIViewController)内部,我尝试调用“ printSome”方法:- (void)viewDidLoad{    [super viewDidLoad];    System * sis = [[System alloc] init];    [sis printSome];    //any additional setup after loading the view from its nib.}现在我有以下错误:体系结构i386的未定义符号:“ _ OBJC_CLASS _ $ _ System”,引用自:“ ObjectiveC_Class_That_Call_Swift_Object”中的objc-class-ref。 -v查看调用)
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

解决了问题,我以前.h在我的Objective-C类中创建了一个新文件并将其包括在内,<ProductModuleName>-Swift.h但是,正如我稍后发现的,此步骤不是必需的,因为编译器会创建不可见的必需文件。

只需将<ProductModuleName>-Swift.h它包括在您的课程中,它就可以正常工作。


查看完整回答
反对 回复 2019-12-27
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

是啊谢谢


这很奇怪,但是会起作用


1) Add @objc  to  Swift class


2) Add in .m 

    #import "(ProjectName)-Swift.h"


3) Call from .h

    @class SwiftClass;


4)On SwiftClass 

   click "Command" + Left Click (Apple Documantation)


5) To see "-Swift.h" -> click "Command" + Left Click

应用程序将在-Swift.h中生成此类的接口


示例:SWIFT_CLASS(“ _ TtC10Project17220PLHelper”)@interface PLHelper


(void)notifyForDownloading:(NSDictionary *)userInfo;

(instancetype)init OBJC_DESIGNATED_INITIALIZER; @结束


查看完整回答
反对 回复 2019-12-27
?
隔江千里

TA贡献1906条经验 获得超10个赞

假设我们有ProjectName“ MyFirstProjectOnSwift”和swift类名称“ mySwiftClass”,而ObjectiveC类是“ MyObjectiveCLass”

以下步骤是:-

  1. 在“ MyObjectiveCLass.m”中添加#import“ MyFirstProjectOnSwift-Swift.h”

  2. 在MyObjectiveCLass.h中添加@class mySwiftClass;

  3. 然后在MyObjectiveCLass.m中

    mySwiftClass * myClass = [mySwiftClass新];{无论您要调用swift方法如何,都可以在任何方法中调用Like this。}

  4. [myClass methodName];


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 834 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信