亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從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 關注
  • 1014 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號