我很久以前將我的應用程式從 Obj-C 轉換為 Swift。在轉換程序中,我需要一個 Bridging-Header 檔案。
現在我意識到這個檔案仍然是為一個目標定義的,盡管該專案現在只使用 Swift 檔案。
因此,我認為我可以簡單地洗掉Target/Build Settings/Objective-C Bridging Header
.
但是,該專案將不再構建。
橋接頭檔案僅包含一個條目(由于歷史原因,因為我之前使用了 StoreKit 的 Obj-C 版本,但不再使用):
#import <StoreKit/StoreKit.h>
如果此條目已被注釋掉,我會收到錯誤訊息
Cannot find 'UIApplicationMain' in scope
在我的主檔案中,基本上只包含
let appDelegateClassName: String?
if !ProcessInfo.processInfo.isTesting {
// No unit test. Use the normal app delegate.
appDelegateClassName = NSStringFromClass(AppDelegate.self)
} else {
// Unit test. No app delegate is used.
appDelegateClassName = nil
}
let args = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc))
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, appDelegateClassName)
我假設,如果我沒有任何 Obj-C 檔案,我不需要橋接頭。那么,當我簡單地發表評論時,為什么會出現此錯誤#import <StoreKit/StoreKit.h>
?以及如何擺脫所有舊的 Obj-C 痕跡?
uj5u.com熱心網友回復:
UIApplicationMain
是在UIKit 框架中定義的,所以需要添加
import UIKit
到 main.swift 檔案。和
#import <StoreKit/StoreKit.h>
在橋接頭檔案中,它恰好可以編譯,因為 StoreKit.h 包含 SKOverlay.h,而后者又包含 UIKit.h(為 iOS 編譯時)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/512855.html