OC和Swift混編,“項(xiàng)目名-Swift.h”文件找不到

“工程名-Swift.h”這個文件是將Swift代碼轉(zhuǎn)為OC的文件,打開這個文件查看,可以看到全部是OC代碼。例如,我在OC項(xiàng)目中,創(chuàng)建一個Swift文件,繼承自UIView,命名為SwiftView。

自動生成的代碼:

import UIKit

class SwiftView: UIView {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

}

build一下,查看“項(xiàng)目名-Swift.h”文件(在OC文件里,#import "工程名-Swift.h",然后跳到頭文件查看,直接在工程導(dǎo)航欄里是找不到的),會在文件的底部看到:

@interface SwiftView : UIView
- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
@end

這個說明,系統(tǒng)會把Swift文件轉(zhuǎn)換為OC文件,放到“工程名-Swift.h”文件中,以供OC調(diào)用。

這里有一點(diǎn)要注意,“工程名-Swift.h”文件里的工程名到底是什么?實(shí)際并不是我們真正的工程名:


工程名

而是:

target->build setting->packaging->product module name

將product module name換成“product module name-Swift.h”。如果你的product module name有問題,例如是中文,特殊字符,你需要改為合法字符。改過之后,需要刪除DerivedData文件夾,重新編譯。

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

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

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