Swift類與OC類方法相互調(diào)用的

1、OC調(diào)用Swift實(shí)例方法

例如在ViewController.m類里調(diào)用Swift的logMe實(shí)例方法掏击,就可以這么寫:

SwiftDemo* demo = [[SwiftDemo alloc] init];
[demo logMe];

2劳澄、OC調(diào)用Swift靜態(tài)方法

首先先在SwiftDemo.swift文件中聲明一個靜態(tài)方法:

public static func swiftStaticFunc(log: NSString) {
    print(log);
}

然后回到ViewController.m類里調(diào)用該方法(記得編譯一下才可以)同樣、調(diào)用方式和OC之間的調(diào)用類似:

[SwiftDemo swiftStaticFunc:@"oc call swift static func"];

3真屯、Swift調(diào)用OC實(shí)例方法

在SwiftDemo.swift類里調(diào)用ViewController.m類里的logYou方法几颜,swift調(diào)用代碼如下:

let vc = ViewController()
vc.logYou()

聲明一個變量vc倍试,也就是ViewController的實(shí)例對象。然后用vc對象調(diào)用實(shí)例方法logYou蛋哭。

4县习、Swift調(diào)用OC多參方法

首先先在ViewController.h中聲明一個OC的多參方法:

- (void) logMe:(NSString*)logMe logYou:(NSString*)logYou;

在.m文件中進(jìn)行一下實(shí)現(xiàn):

- (void)logMe:(NSString *)logMe logYou:(NSString *)logYou {
    NSLog(@"%@--%@", logMe, logYou);
}

在SwiftDemo.swift文件中調(diào)用方法如下:

vc.logMe("log me", logYou: "log you")方法從第一個參數(shù)開始都要寫在括號里。

5谆趾、Swift調(diào)用OC靜態(tài)方法

首先先在ViewController.h中聲明一個OC的靜態(tài)方法:

+ (void) ocStaticFunc:(NSString*)log;

然后在.m文件中簡單些一下實(shí)現(xiàn):

+ (void)ocStaticFunc:(NSString *)log { NSLog(@"%@", log);}

回到SwiftDemo.swift文件中躁愿,用swift調(diào)用OC的靜態(tài)方法。

ViewController.ocStaticFunc("swift call oc static fun")

Swift調(diào)用OC變參方法
在某些需求情景下棺妓,需要用到變參函數(shù)攘已。簡單舉個例子:

+ (void) stringParams:(NSString*)params,...;

這種例子在系統(tǒng)函數(shù)中也可以見到炮赦。比如常用的NSString的一個方法:

- (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

OC的調(diào)用方法就不再重復(fù)了怜跑。這里說一下Swift怎么調(diào)用OC的變參方法。
首先吠勘,Swift不能直接調(diào)用OC的變參方法性芬。
如果必須要用到,則需要對函數(shù)進(jìn)行簡單修改剧防。
拿上面剛說到的stringParams:方法舉例植锉。
需要把方法的寫法改為:

+ (void) stringParams:(NSString*)params args:(va_list)args;

函數(shù)的具體實(shí)現(xiàn):

+ (void) stringParams:(NSString *)params args:(va_list)args { va_list args_copy; __va_copy(args_copy,args); NSMutableString* format = [NSMutableString stringWithString:@""]; while (va_arg(args, NSString*)) { [format appendString:@"%@,"]; } va_end(args); if(format.length>0) [format deleteCharactersInRange:NSMakeRange(format.length-1,1)]; NSString* newFormat = [NSString stringWithFormat:@"%@",format]; NSString * result = [[NSString alloc]initWithFormat:newFormat arguments:args_copy]; va_end(args_copy); NSLog(@"%@", result);}

在Swift中的調(diào)用方式:

let args: [CVarArgType] = ["i'm", " showhilllee"] withVaList(args) { (pointer: CVaListPointer) in return ViewController.stringParams("%@,%@", args:pointer) }

原文鏈接:http://www.reibang.com/p/09b31887d03c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峭拘,隨后出現(xiàn)的幾起案子俊庇,更是在濱河造成了極大的恐慌,老刑警劉巖鸡挠,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辉饱,死亡現(xiàn)場離奇詭異,居然都是意外死亡拣展,警方通過查閱死者的電腦和手機(jī)彭沼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來备埃,“玉大人姓惑,你說我怎么就攤上這事褐奴。” “怎么了于毙?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵敦冬,是天一觀的道長。 經(jīng)常有香客問我唯沮,道長匪补,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任烂翰,我火速辦了婚禮夯缺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甘耿。我一直安慰自己踊兜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布佳恬。 她就那樣靜靜地躺著捏境,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毁葱。 梳的紋絲不亂的頭發(fā)上垫言,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機(jī)與錄音倾剿,去河邊找鬼筷频。 笑死,一個胖子當(dāng)著我的面吹牛前痘,可吹牛的內(nèi)容都是我干的凛捏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芹缔,長吁一口氣:“原來是場噩夢啊……” “哼坯癣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起最欠,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤示罗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芝硬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚜点,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年吵取,在試婚紗的時候發(fā)現(xiàn)自己被綠了禽额。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脯倒,靈堂內(nèi)的尸體忽然破棺而出实辑,到底是詐尸還是另有隱情,我是刑警寧澤藻丢,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布剪撬,位于F島的核電站,受9級特大地震影響悠反,放射性物質(zhì)發(fā)生泄漏残黑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一斋否、第九天 我趴在偏房一處隱蔽的房頂上張望梨水。 院中可真熱鬧,春花似錦茵臭、人聲如沸疫诽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奇徒。三九已至,卻和暖如春缨硝,著一層夾襖步出監(jiān)牢的瞬間摩钙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工查辩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胖笛,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓宜肉,卻偏偏與公主長得像匀钧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谬返,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容