移除Objective-C桥接文件后编译失败:UIApplicationMain不在作用域中
问题原因及解决办法
报错原因
你遇到的「Cannot find 'UIApplicationMain' in scope」错误,本质是UIApplicationMain属于UIKit框架的函数。之前桥接文件里的#import <StoreKit/StoreKit.h>存在时,Xcode会默认让Swift代码隐式访问部分系统框架符号;但当你注释掉这行或移除桥接文件后,你的main.swift没有显式导入UIKit,自然找不到这个函数。
彻底清除Objective-C残留的步骤
给main.swift添加显式导入
在main.swift文件最顶部加上:import UIKit这是解决编译错误的关键一步,确保UIKit的符号能被正常访问。
移除桥接文件配置
进入 Target -> Build Settings,找到Objective-C Bridging Header项,清空对应的路径值,直接删除该配置也可。删除桥接文件实体
在项目导航栏里找到你的桥接文件(比如XXX-Bridging-Header.h),右键选择「Move to Trash」,彻底从项目和磁盘中删除。检查并清理其他OC残留
- 进入 Target -> Build Phases -> Compile Sources,确认里面没有
.m/.mm格式的Objective-C文件,有则直接删除。 - 打开
Info.plist,检查是否有旧的OC类名引用(比如非Storyboard相关的OC类配置),如有则替换为对应的Swift类。
- 进入 Target -> Build Phases -> Compile Sources,确认里面没有
清理缓存重新编译
按下Command+Shift+K清理Build Folder,再按Command+Option+Shift+K清除DerivedData,之后重新编译项目。
内容的提问来源于stack exchange,提问作者Reinhard Männer
相关产品推荐
相关产品推荐

