OC與Swift混編

  1. Swift中調(diào)用OC
    在橋架文件OCAndSwift-Bfidging-Header.h或者swiftAndOC-Bfidging-Header.h中導(dǎo)入對(duì)應(yīng)的OC文件

  2. OC中調(diào)用Swift

Person.swift

import UIKit

class Person: NSObject {
    var name: String
    var age: Int
    init(name: String,age: Int) {
        self.name = name
        self.age = age
    }
    
}
// 如果變量和方法前不加@objc那么OC在運(yùn)行時(shí)是不可見(jiàn)的所以要用@objc修飾

class Person: NSObject {
   @objc var name: String
   @objc var age: Int
   @objc  init(name: String,age: Int) {
        self.name = name
        self.age = age
    }
    
}

// 在OC的ViewController.m中創(chuàng)建Person對(duì)象

ViewController.m

#import "ViewController.h"
// Swift項(xiàng)目中OC文件引用Swift文件 手動(dòng)導(dǎo)入swiftAndOC-swift.h文件
// OC項(xiàng)目中 OC文件引用Swift文件 手動(dòng)導(dǎo)入OCAndSwift-Swift.h文件
#import "swiftAndOC-swift.h"

  1. NS_SWIFT_NAME 和 NS_SWIFT_UNAVAILABLE 指令
ViewController.h中

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
- (void)test1 NS_SWIFT_NAME(myTest()); // 在swift中調(diào)用myTest()方法
- (void)test2 NS_SWIFT_UNAVAILABLE("請(qǐng)使用myTest"); // 在swift中沒(méi)有test2方法.

@end
  1. 混編采坑

1.> 對(duì)于自定義的類(lèi)而言,OC的類(lèi)不能繼承自Swift的類(lèi),即要混編的OC類(lèi)不能是Swift類(lèi)的子類(lèi),反過(guò)來(lái),需要混編的Swift類(lèi)可以繼承自O(shè)C的類(lèi).

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容