hidesBottomBarWhenPushed引发的问题

问题描述

ViewController2push到ViewController3,Vi架构图ewController2 设置 hid测试esBottomBarWhen测试抑郁症的20道题Pushed属性,实现tabbar被隐藏。

    TestViewControllerTwo *two = [[TestViewControllerTwo alloc]init];
    two.hidesBottomBarWhenPushed = true;
    [self.navigationController pushViewController:two animated:true];

在使用ViewCo动画片汪汪队ntroller2界面的时候由于业务逻辑,需要退出界面动画片汪汪队,并切换选中架构图模板tabbarItem,跳转界面至View动画专业Controller1,会发现tabbar“不会在显示回来”。

 [self.navigationController popViewControllerAnimated:true];
  [self.navigationController.tabBarController setSelectedIndex:0];

解决过程

首先在ViewCont动画roller1Vie动画头像wController3打印tabbar的hidden属性,值等于false,因此无法使用hidden属性控制tabbar显示。
猜测由于[self.navigationController popViewControllerAnimated:true];动画返回界面,并且直接切换控制器界面架构师工资,导致tabbar没有及时显示,架构师工资将其改为[self.navigationController popViewControllerAnimated:false];,问题解决。

问题修复
[self.navigationController popViewControllerAnimated:false];
[self.navigationController.tabBarController setSelectedIndex:0];

静态库冲突问题

问题描述

开发中接入三方静态库文件实现功能,打包编译后发现与原有静态库内置文件名称冲突。

解决过程

查找两个静态库的来源为同一家公司,查阅有关静态库文件冲突资料,解决方法来源于有关.a(静态库)冲突问题

问题修复

备份源文件,把这两个.a文件“中的一个”.架构图a文件生成对应架构.a文件,然后把这个.a文件解压缩成.o文件,删测试除里面看到的重复的.o文件。然后再把这个对应.o文件合成对应架构的.a文件,再把多个架构的.a文件合成一个.a文件。最后把项目里的.a文件替测试抑郁症换成自己处理过的.a文件。测试通过,编译正常运行。

注:方法仅限于三方静态库来源一致,一定要备份源文件。

附流程

假设.a文件名称为test.a,将其放置一个单独的文件夹“Test”中
终端

$ cd  "Test文件夹路径"
$ lipo  -info  test.a //可以看到armv7/arm64等字眼。就说明这个test.a包含了几种架构包。
//根据里面含有几种架构包就执行相应命令
//例:
$ lipo  test.a  -thin armv7  -output  test_armv7.a
$ lipo  test.a  -thin i386  -output  test_i386.a
//在Test文件夹得到libx-armv7.a 等等
//创建一个文件夹用于解压架构包文件
$ mkdir armv7
$ cd armv7
// 解压上一级目录下的armv7架构包文件
$ ar  -x  ../libx-armv7.a
//在armv7文件夹中找到对应的文件删除后生成新的armv7.a文件
$ libtool -static -o ../test_newarmv7.a *.o //【.a 和 * 号之间有一个空格】
// 重复生成其他对应架构包  创建文件夹  解压 删除冲突文件 生成新的静态库包
//合并所有新的架构包
$ lipo  -create  test_newarmv7.a  test_newi386.a  -output  test.a