iOS沉思錄 OC和Swift語言互調

2021-07-30 10:52:43 字數 1929 閱讀 9645

oc和swift之間的互調很簡單,ios8以後官方給出了這兩種語言之間的橋接方案,簡單說就是在swift工程中,通過提示建立的bridging標頭檔案可以將oc檔案和swift檔案銜接在一起,從而可以在oc檔案中引用swift類,或者在swift檔案中引用oc的類。應用較多的主要是在swift中呼叫oc類,使得在最新的swift工程中仍然能夠相容使用以前的oc類庫等。

這裡通過乙個簡單的例子展示在swift工程中oc和swift之間的互調:

這裡我們在viewcontroller.swift中呼叫occlass類,同時在occlass類中呼叫swiftclass.swift。其中在swift中引用oc類時要在bridging標頭檔案中引入oc類的標頭檔案(swift檔案中沒有標頭檔案及其引用),而在oc中引用swift類時直接引入「swiftbridge-swift.h」即可,不需要在bridging標頭檔案設定,其中「swiftbridge」為工程名,該檔案是隱藏的,對工程中所有swift類檔案進行了向oc語言的翻譯,從而在oc檔案中可以像呼叫其他oc檔案一樣呼叫工程中的swift類檔案。

在swiftclass.swift中定義乙個例項方法和乙個類方法:

import uikit

class swiftclass: nsobject

class func swiftclassmethod() ->

void

}

在occlass類中呼叫swiftclass:

/* occlass.h */

#import

@inte***ce

occlass : nsobject

- (void)ocinstancemethod;

+ (void)occlassmethod;

@end

/* occlass.m */

#import "occlass.h"

#import "swiftbridge-swift.h" /* 引入swift類標頭檔案 */

@implementation

occlass

- (void)ocinstancemethod

+ (void)occlassmethod

@end

在bridging標頭檔案引入oc類標頭檔案供swift呼叫:

/* swiftbridge-swift.h */

#import

"occlass.h"

在viewcontroller.swift中呼叫occlass類:

/* viewcontroller.swift */

import uikit

class

viewcontroller: uiviewcontroller

}

列印結果:

swift instance method!

2017-04-12 12:

40:39.657 swiftbridge[3773:5420107] oc instance method!

swift

class

method!

2017-04-12 12:

40:39.657 swiftbridge[3773:5420107] oc class

method!

另外類似的也可以實現swift和c語言之間的互調。

iOS沉思錄 BAD ACCESS記憶體錯誤除錯

bad access報錯屬於記憶體訪問錯誤,會導致程式崩潰,錯誤的原因是訪問了野指標 懸掛指標 野指標指的是本來指標指向的物件已經釋放了,但指向該物件的指標沒有置 nil,指標指向隨機的未知的記憶體,程式還以為該指標指向那個物件,導致存在一些潛在的危險訪問操作,這些危險訪問操作無法被指標指向的未知記...

iOS開發 OC專案呼叫Swift方法

為防止出問題,建議以這樣的方法做 1.建乙個oc工程命名為swiftoc 2.新建乙個swfit檔案命名為test.swift,會彈出提示,選擇create bridging header建立橋接檔案,系統會建立 工程名 bridging header.h 3.配置工程 設定defines modu...

OC和Swift混編 驚喜

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