swift與OC混編(方法呼叫)

2021-07-09 17:45:19 字數 2571 閱讀 1992

oc呼叫swift方法比較簡單。但是需要注意以下幾點:

2.oc類裡僅可以呼叫public的swift方法和變數

3.swift類最好用@objc(***)進行描述

剩下的呼叫方式就和普通的oc之間呼叫方式類似了。

swiftdemo* demo = [[swiftdemo alloc] init];

[demo logme];

首先先在swiftdemo.swift檔案中宣告乙個靜態方法:

public static func swiftstaticfunc(log: nsstring)
然後回到viewcontroller.m類裡呼叫該方法(記得編譯一下才可以吆~)

桐鄉的,呼叫方式和oc之間的呼叫類似:

[swiftdemo swiftstaticfunc:@"oc call swift static func"];
前一篇文中也已經說過需要有乙個橋接檔案swift才可以呼叫oc相關方法以及屬性等,這裡不再贅述,忘記了的可以再回去看一下。

其實前面文中已經舉例說明了呼叫方法。這裡再簡單重複一下。

在swiftdemo.swift類裡呼叫viewcontroller.m類裡的logyou方法,swift呼叫**如下:

let vc = viewcontroller()

vc.logyou()

宣告乙個變數vc,也就是viewcontroller的例項物件。然後用vc物件呼叫例項方法logyou。

首先先在viewcontroller.h中宣告乙個oc的多參方法:

- (void) logme:(nsstring*)logme logyou:(nsstring*)logyou;
在.m檔案中進行一下實現:

- (void)logme:(nsstring *)logme logyou:(nsstring *)logyou
在swiftdemo.swift檔案中呼叫方法如下:

vc.logme("log me", logyou: "log you")
方法從第乙個引數開始都要寫在括號裡。

首先先在viewcontroller.h中宣告乙個oc的靜態方法:

+ (void) ocstaticfunc:(nsstring*)log;
然後在.m檔案中簡單些一下實現:

+ (void)ocstaticfunc:(nsstring *)log
回到swiftdemo.swift檔案中,用swift呼叫oc的靜態方法。

viewcontroller.ocstaticfunc("swift call oc static func")
在某些需求情景下,需要用到變參函式。簡單舉個例子:

+ (void) stringparams:(nsstring*)params,...;
這種例子在系統函式中也可以見到。比如常用的nsstring的乙個方法:

- (instancetype)initwithformat:(nsstring *)format, ... ns_format_function(1,2);
oc的呼叫方法就不再重複了。這裡說一下swift怎麼呼叫oc的變參方法。

首先,swift不能直接呼叫oc的變參方法

如果必須要用到,則需要對函式進行簡單修改。

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

需要把方法的寫法改為:

+ (void) stringparams:(nsstring*)params args:(va_list)args;
函式的具體實現:

+ (void) stringparams:(nsstring *)params args:(va_list)args 

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中的呼叫方式:

let args: [cvarargtype] = ["i'm", " showhilllee"]

withvalist(args)

當然,還有其他方式來實現。可以嘗試找一下方法。

—end—

Swift與OC的混編

自2014年蘋果推出了swift之後,確實很快就受到許多開發者的歡迎但在實際開發時,可能有許多第三方庫並未實現 swift化,這時就需要swift與oc的混編技巧 1.在.件中引用swift的類和方法,需要在.件中進行引用,需要注意引用格式 import yourprojectname swift....

swift實現與OC的混編

現在寫swift,很多的類庫還不是很全,很多的第三方還是只有oc版的,這個時候swift想用,通常都是採用的swift和oc混編的方式.這裡給大家演示一下混編是如何做的.swift中使用oc oc中想要使用乙個類,必須引入這個類的標頭檔案,可是,可是swift中沒有標頭檔案啊 這怎麼辦呢?其實swi...

OC和Swift混編 驚喜

今天在和一位前輩交流的之後,使用了oc和swift混編開發,遇到了乙個讓我忍不住要歡呼的情況,在這裡,跟大家分享一下,也再次讚嘆一下xcode的強大.oc和swift混編出現最多的就是在編寫swift 的過程中使用oc框架了.以前,在xcode6.3beta版本的時候,我猶記得我們在進行oc和swi...