OC與swift的介面跳轉及資料傳輸

2021-09-02 17:31:50 字數 4396 閱讀 4514

該專案主要介紹了oc與swift之間、swift內部幾種常見的傳值方式(屬性傳值、**塊傳值、**傳值、通知)

如果oc與swift之間的橋接有疑問請參考:oc與swift橋接互調

1、present方式跳轉

@objc func btnaction(_ sender:uibutton);

nslog("������:%@____%@",sender,self);

}

2、返回

///1、編輯協議

@objc(fourvcdelegate)

protocol fourvcdelegate

///2、定義協議物件

@objc var mydelegate:fourvcdelegate?;

///3、呼叫協議

letstr:string = "**方法"

self.mydelegate?.backsupervc(str: str);

///1、呼叫協議

@inte***ce firvc ()///2、簽署協議

-(secvc *)sevc

return _sevc;

}///3、協議實現

///**塊定義

@property(nonatomic,strong)void (^thiblock)(nsstring *str);

///**塊實現

!self

.thiblock?:self

.thiblock(@"swift呼叫oc**塊");

let vc  = thivc();

///**塊呼叫

///有引數無返回值

@objc func swmethod1(str: string)

///有引數有返回值

@objc func swmethod2(str: string) -> (string)

/// mark - **塊

///無返回引數

@objc func bkblock0(response:() -> ())

///返回乙個字串引數

@objc func bkblock1(response:(_ res : string) -> ())

///返回多個任意型別引數

@objc func bkblock_2_(response:(_ res : any,_ res1 : any) -> ())

///傳入多個引數 並返回多個任意型別的引數

@objc func bkblock3(p1:any,p2:any,p3:any,res:(_ res0 : any ,_ res1 : any ,_ res2:any,_ res3:any) -> ())

///block帶返回值

@objc func bkblock4(res:() -> ()) -> (string)

//定義block

typealias fucblock = (_ backmsg : string

?) ->()

func bkblock4(cmdstr:string

?,blockproperty:fucblock)

override func viewdidload()

override func didreceivememorywarning()

override func touchesbegan(_ touches: set, with event: uievent?) ;}}

fourvc *vc = [fourvc new];

// --- 屬性傳值 ---

vc.arr0 = @[@"可以",@"可以",@"可以"];

/// ------ 方法呼叫 -----

//無引數無返回值

[vc swmethod0];

//有引數無返回值

[vc swmethod1withstr:@"dasda"];

//有引數有返回值

nsstring *str = [vc swmethod2withstr:@"sdfasda"];

nslog(@"%@",str);

/// ------ **塊呼叫 -----

[vc bkblock0withresponse:^];

//有乙個返回值

[vc bkblock1withresponse:^(nsstring * str) ];

//有兩個返回值

[vc bkblock_2_withresponse:^(id str, id str1) ];

//有引數有返回值

///**塊

@property(nonatomic,strong)void (^clickblock)(void);

///字串

@property(nonatomic,copy)nsstring *titstr;

///方法

-(void)testaction;

@end

- (void)viewdidload 

-(void)testaction

let sub  = ocvc();

//屬性傳值

sub.titstr = "屬性傳值";

//方法呼叫

sub.testaction();

//**塊呼叫

OC與Swift的區別

a.b 表示 a,b 包括 a 和 b eg 3.5,就是範圍 3,4,5 a.元組型別元組 tuples 把多個值組合成乙個復合值。元組內的值可以是任意型別,並不要求型別一致。eg var value int,string x 15,y hello 使用常量,更加安全,不能夠被修改,在需要對物件進...

Swift與OC的混編

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

swift實現與OC的混編

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