记录下自己开发过程中遇到的一些小bug
定期更新
1.服务器接口正常返回字段, 没有做异常处理.然后服务器突然返回Null,结果崩溃.需要判断服务器返回数据是否为NULL, isKindofClass [NSNull class]或者使用Nullsafe分类
2.cocoapods添加``SVProgressHUD``的时候会出现过模拟器崩溃,bundle报错,真机运行没问题,. 将SVProgressHUD从pod删除后重新添加进入项目解决了这个问题!
3.线上第三方加载的storyBoard突然crash,重新导入改第三方,解决!
4.UIScrollView 设置滚动范围和滚动视图同样大小的时候无法滚动,必须滚动范围>滚动视图的时候才有位置可以滚动 scrollview 确认滚动范围contextSize.
①使用setContextSize设置
②ScrollView上布局视图,自动计算出滚动范围.
5.自定义弹窗视图 使用alloc init实例化时设置了frame没有出现问题. 后来自定义类方法实例化的时候的忘记了设置frame值 但是视图的显示没有什么问题,却引起了无法接受点击事件的情况. 解决过程,新增的代码一步一步的注释.看引起无法点击的地方是哪里? 答案: 由于使用了类方法实例化,只传入了参数,但是没有设置frame值,所以点击的时候并没有点击到视图上,所以无法响应事件
6.测试环境测试推送,打ad-hoc的包,测试无法收到推送 是由于极光推送测试时,必须匹配对应环境打包才可以测试, 如测试环境时必须打包的开发证书的包,而ad-hoc是发布证书打的包,是用于发布环境测试时才可以
7.可变数组问题,使用可变数组组装数据,每次组装后,全部的数据都跟着变化,是由于可变数组地址问题造成,每次添加使用copy将可变数组拷贝成不可变数组解决.
8.点击H5页面按钮本来需要弹出一个弹窗,原生JS alert弹窗函数在WKWebView无效
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(nonnull void (^)(void))completionHandler{
//js 里面的alert实现,如果不实现,网页的alert函数无效
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
completionHandler();
}]];
[self presentViewController:alertController animated:YES completion:^{}];
}
9.导入了公司另一个兄弟开发的SDK,模拟器和真机都能正常运行,但是到了打包的时候报错:clang: error: linker command failed with exit code 1 (use -v to see invocation) 后来发现是由于勾选了bitcode选项,而他开发的SDK包并不支持bitcode所以报错了. 我们可以在Build Settings中 找到Enable Bitcode选项,将该选项设置为NO即可解决问题.
10.Swift开发中,pod 'SnapKit' 后, 进行import 发现找不到该第三方. 后面使用 pod search 'SnapKit 搜索版本, 然后指定版本pod install.
11.同事更新pods库后,我拉取后进行Pod install,然后报错:SDWebImage中的'NSImage + webcache'file not found',尝试使用注释podfile文件中的 pod sdwebimage后进行删除库再重新安装, 发现即使注释后再install也仍然删除不了,查看podfile文件发现有个SDclyescrollView的库对sdwebimage依赖.两个库一起注释掉,然后install 删除成功, 再重新导入, 解决了这个问题.