ios - iOS EXC_BAD_ACCESS (code=1, address=0x0) 仅在 iOS 9 上崩溃
问题描述
我正在与其他团队一起制作应用程序,其他团队为我部署了一个框架。我将这些框架导入我的应用程序。
我尝试使用我的测试设备进行构建,它们是 iPhone 8 Plus(iOS 11)、iPhone 7 Plus(iOS 10)、两个 iPhone X (iOS 11)、iPhone Pro (iOS 11) 以上设备也可以正常工作。
但不适用于 iPhone 5c (iOS 9.3) iPad Mini 1 (iOS 9.3) 。它们仅适用于第一次使用 Xcode 构建,断开电缆后,第二次打开应用程序,它总是在启动图像后崩溃。
appdelegate.h 中的代码
@property (strong, nonatomic) FrameworkViewController *InfoVC;
@property (strong, nonatomic) MyNavigationViewController *conNav;
我的 appdelegate.m 中的初始化代码
NSBundle *myframeworkBundle = [NSBundle bundleForClass:[FrameworkManager class]];
InfoVC = [[FrameworkViewController alloc]initWithNibName:@"FrameworkViewController" bundle:myframeworkBundle];
conNav = [[MyNavigationViewController alloc] initWithRootViewController:InfoVC];
InfoVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"leftMenu_icon.png"] style:UIBarButtonItemStylePlain
target:self
action:@selector(myfunction:)];
conNav.tabBarItem.title=@"TAP_Information";
conNav.tabBarItem.image=[UIImage imageNamed:@"tab_info.png"];
我添加了一个断点并让那些 iPhone 5c 和 Mini 1 的 InfoVC 返回 nil。但是那些工作设备将显示一个地址。而且我认为 infoVC 是 nil 并且我尝试将 leftbarButtonItem 设置为 nil 对象以导致崩溃,但是如何解决这个问题?我尝试添加一个 main_queue 似乎行不通。
- - - - - - -更新 - - - - - - -
我尝试添加一些 NSLog 来查看那些 nil 对象,我发现 NSlog 可以打印出一个有效的地址,nil 是应用程序崩溃的原因。现在它仅在 iOS 9 设备上随机崩溃。所有的崩溃都是 EXC_BAD_ACCESS(代码=1,地址=0x0)。
解决方案
如果您已获得.framework
文件,我建议您使用以下功能之一搜索您的 NSBundle:
+ (NSBundle *)bundleWithIdentifier:(NSString *)identifier
+ (instancetype)bundleWithPath:(NSString *)path
如文档中所述:
框架和插件通常使用此方法在运行时定位它们自己的包。此方法可能比尝试使用 bundleForClass: 方法定位捆绑包更有效。但是,如果对具有指定标识符的已加载和缓存的捆绑包的初始查找失败,则此方法会使用可能耗时的试探法来尝试定位捆绑包。作为优化,您可以使用 bundleWithPath: 或 bundleWithURL: 方法来避免文件系统遍历。
推荐阅读
- sas - SAS 外部联合 corr BY 使用 Do Loop
- r - R获取特定模式之间的字符串
- google-sheets - 如果一个单元格在另一个单元格的 10 以内,如何设置条件格式
- reactjs - 它如何在反应路线属性中工作
- assembly - 谁能分解这个汇编代码的作用?
- c# - 单击后退导航时删除静态资源
- opencart-3 - Opencart修改刷新Mysql
- google-apps-script - Google Apps 脚本可以创建 Google 新闻快讯吗?
- javascript - 检测循环的音频缓冲区结束?
- javascript - Discord 自动消息反应 - 特定