Object-C與Swift混合開發


Object-C作為Apple的iOS App開發語言服務了許多個年頭,2014年Apple推出了新的編程語言Swift,更高效更安全的口號再次吸引了一大批非iOS開發程序員進入,小編認為Swift取代Object-C只是時間問題,在神州這片土地上,畢竟技術普及有些落后,但再有兩年左右時間Swift產品鏈將形成,第三方支持框架逐步完善,Swift必將成為iOS開發主流。目前來看,激進派的現狀Swift與Object-C混合開發。

Object-C中調用Swift

下面就給大家分享下Object-C項目下如何使用Swift編程。

  1. 首先創建一個Object-C工程

  2. 右擊項目名稱,在彈出的快捷菜單上點擊“New File…”菜單項,如下圖所示,在新建文件對話框中選擇點擊“Cocoa Touch Class”列表項,然后點擊“Next”按鈕,進入下一步

這里寫圖片描述
3. 輸入新建類的類名,選擇需要的父類類型,切換編程語言為Swift,然后點擊“Next”,最后會出現如下圖所示的對話框,主要提示是否自動生成隱藏的橋街頭文件,顯然這里需要創建,點擊Create Bridging Header ,這樣一個Object-C中就創建了一個Swift類
這里寫圖片描述

在Swift中寫一個方法測試一下:

    func SayHi()
{
print("Hello,Welcome to call me!")
}

4.在Object-C中調用時需要注意,在類中需要引入隱藏式維護頭文件

 #import “項目名稱-swift.h”

具體到我們這里就是為:

 #import “BlendSO-swift.h”

5.最后就可以放心地調用Swift類了

SwiftClass *swift=[[SwiftClass alloc]init];

[swift SayHi];

那Swift項目中怎么調用Object-C呢?其實跟上邊比較類似

Swift中調用Object-C

  1. 首先創建一個Swift工程

  2. 右擊項目名稱,在彈出的快捷菜單上點擊“New File…”菜單項,如下圖所示,在新建文件對話框中選擇點擊“Cocoa Touch Class”列表項,然后點擊“Next”按鈕,進入下一步

    這里寫圖片描述

    3.輸入新建類的類名,選擇需要的父類類型,切換編程語言為Objective-C,然后點擊“Next”,最后會出現如下圖所示的對話框,主要提示是否自動生成顯式的橋街頭文件,顯然這里需要創建,點擊Create Bridging Header ,這樣一個Swift中就創建了一個Objective類

    在新建的Objective-C中測試一下:

         ObjectiveCClase.h中

    @interface ObjectiveCClase : NSObject
    @property(nonatomic,copy)NSString *name;
    -(id)initWithName:(NSString *)name;
    -(void)SayHi:(NSString *)name;
    @end

    ObjectiveCClase.m中

    -(id)initWithName:(NSString *)name
    {
    self=[super init];
    self.name=name;
    return self;
    }
    -(void)SayHi:(NSString *)name
    {
    NSLog(@"%@說:Swift,歡迎你調用我!",name);
    }

    4.這里跟上面不同的是需要在顯式橋接頭文件中加入Objective-C中的類的頭文件名,而Objective-C中不用(也沒法調呀,因為是隱式的)

這里寫圖片描述

5.最后在Swift中調用Objective-C的類實現OC中的功能

    let objective=ObjectiveCClase(name: "Objective-C")
objective.SayHi("Objective-C")

總結一下:

  1. Swift與Objective-C的互調在前期創建步驟基本相同

  2. 中期都會提示生成一個橋接文件,都是第一次的時候會提示,再創建就不會再次提示,但兩者是有區別的:Objective-C中調用Swift時生成的是隱式的,而Swift調用Objective-C時是顯式的橋接文件

  3. 最后在Objective中調用Swift時需要在所在類上邊加上格式為#import “項目名稱-swift.h”的頭文件,而而Swift調用Objective-C時卻是在顯式的橋接文件中引入Objective-C的頭文件


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com