一、导出APP对应的沙盒文件(这里只有使用真机运行的APP才可导出)
该方法可用于开发过程中,处理视频、图片、配置文件等存储数据出现问题时,导出沙盒进行直观分析(可通过配合断点调试,对比代码执行前后目录存储的变化);同时,在代码中使用 NSUserDefault 保存的数据,也可在沙盒包内容中的“AppData/Library/Preferences/” 目录下对应的“包名.plist”文件中查看。
1.打开Xcode,选择顶部功能栏中的 “Window” ,在里面选择 “Devices And Simulators” 项(Xcode 9之前该项名为“Devices”),接着会出现如图 1 界面;
2.在图 1 界面中,在左边栏选中对应的调试真机,接着右边会出现真机设备相关信息。先在箭头1所指的地方选中你需要导出沙盒的APP,接着点击箭头2指向的按钮,并选中第二项“Download Container...”,最后保存到桌面或其它目录即可。至此,沙盒文件导出完毕;
3.查看沙盒:如图 2,右键点击沙盒文件,并选中“显示包内容”即可看到沙盒里的文件信息等。
二、使用“command+option+\”,可为全局变量、方法进行格式化注释注释。
三、signal SIGPIPE 问题
之前在处理和硬件设备交互的APP过程中,遇到过 signal SIGPIPE 的一些崩溃问题,后来是在APP端做了处理。大致原因是因为使用过程中,两端socket的连接已经断开,但其中一端还在发送消息,所以出现该问题。
解决方案是在 iOS 的main函数中加入捕捉忽略该异常的代码,如下所示:
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &sa,0);
加入后,连接真机代码调试时,如果出现该问题,可在 lldb 中输入 process handle SIGPIPE -s false ,回车继续运行断点即可。
四、国行iPhone网络权限的问题
国行iPhone会有“允许应用使用数据”的提示,在App首次安装的时候如果拒绝可能会导致App在使用上出现问题。笔者在开发中也有遇到过没提示的情况,这个时候有个小技巧就是在第一次安装APP后的某个页面,偷偷用webview加载一个隐藏的网址比如 //www.greatytc.com/ 此时,就会弹出提示对网络权限选择或修改的提示框。
五、iOS @syn同步数据时,里面不要做数据的初始化(申请空间),否则数据加载过快时会导致内存泄漏