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

收集整理,希望對大家有幫助
1杉辙、OC調(diào)用Swift實例方法
==
例如在ViewController.m類里調(diào)用Swift的logMe實例方法鼓寺,就可以這么寫:

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實例方法

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

let vc = ViewController()
vc.logYou()

聲明一個變量vc立哑,也就是ViewController的實例對象夜惭。然后用vc對象調(diào)用實例方法logYou。

4铛绰、Swift調(diào)用OC多參方法

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

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

在.m文件中進行一下實現(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文件中簡單些一下實現(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)用方法就不再重復了。這里說一下Swift怎么調(diào)用OC的變參方法姐帚。

首先吏垮,Swift不能直接調(diào)用OC的變參方法。

如果必須要用到卧土,則需要對函數(shù)進行簡單修改惫皱。

拿上面剛說到的stringParams:方法舉例。

需要把方法的寫法改為:
```
+ (void) stringParams:(NSString*)params args:(va_list)args;
```
函數(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)
    }
```
當然尤莺,還有其他方式來實現(xiàn)旅敷。可以嘗試找一下方法颤霎。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末媳谁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子友酱,更是在濱河造成了極大的恐慌晴音,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缔杉,死亡現(xiàn)場離奇詭異锤躁,居然都是意外死亡,警方通過查閱死者的電腦和手機或详,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門系羞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郭计,“玉大人,你說我怎么就攤上這事椒振≌焉欤” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵澎迎,是天一觀的道長庐杨。 經(jīng)常有香客問我,道長夹供,這世上最難降的妖魔是什么灵份? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮罩引,結(jié)果婚禮上各吨,老公的妹妹穿的比我還像新娘。我一直安慰自己袁铐,他們只是感情好揭蜒,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剔桨,像睡著了一般屉更。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洒缀,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天瑰谜,我揣著相機與錄音,去河邊找鬼树绩。 笑死萨脑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的饺饭。 我是一名探鬼主播渤早,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘫俊!你這毒婦竟也來了鹊杖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤扛芽,失蹤者是張志新(化名)和其女友劉穎骂蓖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體川尖,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡登下,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庐船。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡银酬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筐钟,到底是詐尸還是另有隱情,我是刑警寧澤赋朦,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布篓冲,位于F島的核電站,受9級特大地震影響宠哄,放射性物質(zhì)發(fā)生泄漏壹将。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一毛嫉、第九天 我趴在偏房一處隱蔽的房頂上張望诽俯。 院中可真熱鬧,春花似錦承粤、人聲如沸暴区。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仙粱。三九已至,卻和暖如春彻舰,著一層夾襖步出監(jiān)牢的瞬間伐割,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工刃唤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隔心,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓尚胞,卻偏偏與公主長得像硬霍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辐真,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

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