Objective-C調用Swift 函數(shù)的問題

OC 導入或生成Swift 文件時

Xcode會自動為Project生成頭文件以便在Objective-C中調用。

在Objective-C類中調用Swift犬第,只需要#import "productModuleName-Swift.h"即可調用阴颖,Xcode提供的頭文件以Swift代碼的模塊名加上-Swift.h為命名柴灯。

在這個頭文件中谜疤,將包含Swift提供給Objective-C的所有接口选脊、Appdelegate及自動生成的一些宏定義澎怒,如圖1-5所示褒搔。注意productModuleName-Swift.h在Xcode中是無法搜索查看的,只能從import中點擊進去查看喷面。

關于Xcode相關的配置, 不醉就不多說了, 百度一下一大把, 主要闡述一下不醉混合開發(fā)期間遇到的問題:

1> swift API 在OC中調用死活調不到(氣煞老夫也)

? ? 稍微了解swift的乖乖們都知道, 她有很多特性是OC理解不了的, 例如元組, 還有天殺的可以直接加函數(shù)甚至元組的枚舉. 系統(tǒng)自動生成的-Swift.h一下就懵逼了, 牛頭不對馬嘴,?從import中點擊進去查看, 什么枚舉屬性, func函數(shù) 就算是public open也完全找不到, 壓根給你忽略了!怎么辦?怎么辦?不要怕, 問題就是給人解決的, 不然它的存在就毫無意義

舉個栗子:

不醉最近在研究高大上的ARKit, 奈何坑爹的官方給的demo都是Swift, 不醉不是沒用過Swift, 奈何很早之前了, 近兩年基本就著女王(女盆友, 哈哈)的美味吃到肚子里了,好吧! 是都忘光了!忘了怎么辦? 去學!當然要學, BUT, 老板不給你那么多時間啊, 我們的項目要用OC開發(fā)的 ,官方的代碼全部翻譯成OC不太現(xiàn)實, 時間, 對, 沒時間!那么問題的關鍵來了, 怎么辦?機智的乖乖們可能想到了-Swift.h理解不了的東西我們換個她能理解的方式給她實現(xiàn), 這么多廢話, 看代碼:

func worldPosition(fromScreenPosition position: CGPoint, objectPosition: float3?, infinitePlane: Bool = false) -> (position: float3, planeAnchor: ARPlaneAnchor?, isOnPlane: Bool)? {

????這里的代碼就像她肚子里的蟲, 乖乖們多少還是要能看懂點的!

}

(fromScreenPosition position: CGPoint, objectPosition: float3?, infinitePlane: Bool = false)這是讓你傳入個元組;

(position: float3, planeAnchor: ARPlaneAnchor?, isOnPlane: Bool)這是給你return個元組;

奈何OC讀不懂這個, 那么問題來了, OC能讀懂什么, 此處又要啰嗦了:

繼承自NSObject的對象類如:ARPlaneAnchor, 兩者都有的CGPoint及基礎數(shù)據(jù)類型等等,?float3她不懂, 那么組成float3的Float她是可以懂的, 要怎么做呢?堆料!就是在Swift文件里重寫函數(shù),直接上代碼:

func worldPosition0(fromScreenPosition position:CGPoint) -> (ARPlaneAnchor?) {

? ? 這里邊你就依葫蘆畫瓢嘛! 傳入的點position有了,返回的ARPlaneAnchor有了! 不能用元組, 你就傳不了多個參數(shù)(其實是不醉不知道, 有知道的可以賜教), 剩下的objectPosition: float3?, infinitePlane: Bool = false,position: float3,isOnPlane: Bool 怎么辦? 想不到了吧, 你一定想不到不醉會用這么笨的方法:定義屬性!!!

var objectPositionX: Float = 0

var objectPositionY: Float = 0

var objectPositionZ: Float = 0

//這三個是拆分的objectPosition: float3,跟position: float3同用一組就行了, 我就是用來傳值;?在OC中調用你自定義的下邊的方法之前初始化對象給它們賦值

var objectPosition: float3?

if objectPositionY != 0 && objectPositionX != 0 && objectPositionZ != 0 {

objectPosition = float3(x: self.objectPositionX, y: self.objectPositionY, z: self.objectPositionZ)

}//寫在這個函數(shù)里, 這樣就得到了Swift想要的float3

var infinitePlane: Bool = false//也在OC中調用你自定義的下邊的方法之前初始化對象給它賦值

var isOnPlane: Bool = false//在return之前給它賦值, 你就可以在OC里獲取到她想要的isOnPlane的值

以上定義的屬性不是放在這里, 放在你Swift文件她定義其他屬性的地方就OK??


畫完這個函數(shù)預編譯一下,?從import中點擊進去-Swift.h查看, 沒意外!就是它:

????????- (ARPlaneAnchor * _Nullable)worldPosition0From:(CGPoint)position ????????????????????SWIFT_WARN_UNUSED_RESULT;//

}

那么OC文件里的代碼就是:

需要的屬性賦值和

你想要的ARPlaneAnchor = [self.SceneView worldPosition0From:screenCenter];

以及position: float3(此處用那組三個屬性自己拼好就行了)

感覺有點繞, 廢話太多!有什么不懂得可以直接問, 未能及時回復的還請見諒!

未完待續(xù)! 記得點贊哦!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末星瘾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惧辈,更是在濱河造成了極大的恐慌琳状,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盒齿,死亡現(xiàn)場離奇詭異念逞,居然都是意外死亡,警方通過查閱死者的電腦和手機边翁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門翎承,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人符匾,你說我怎么就攤上這事叨咖。” “怎么了待讳?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵芒澜,是天一觀的道長。 經(jīng)常有香客問我创淡,道長痴晦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任琳彩,我火速辦了婚禮誊酌,結果婚禮上,老公的妹妹穿的比我還像新娘露乏。我一直安慰自己碧浊,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布瘟仿。 她就那樣靜靜地躺著箱锐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劳较。 梳的紋絲不亂的頭發(fā)上驹止,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天浩聋,我揣著相機與錄音,去河邊找鬼臊恋。 笑死衣洁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的抖仅。 我是一名探鬼主播坊夫,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撤卢!你這毒婦竟也來了环凿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凸丸,失蹤者是張志新(化名)和其女友劉穎拷邢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屎慢,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年忽洛,在試婚紗的時候發(fā)現(xiàn)自己被綠了腻惠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡欲虚,死狀恐怖集灌,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情复哆,我是刑警寧澤欣喧,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站梯找,受9級特大地震影響唆阿,放射性物質發(fā)生泄漏。R本人自食惡果不足惜锈锤,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一驯鳖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧久免,春花似錦浅辙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呼巴,卻和暖如春泽腮,著一層夾襖步出監(jiān)牢的瞬間御蒲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工盛正, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留删咱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓豪筝,卻偏偏與公主長得像痰滋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子续崖,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容