项目已上线,并进行了几个版本的小迭代.此项目为财经直播类APP,开发时间不到3个月,真的是日夜加班,赶出来的工程.虽然不完善之处,还是有滴.还是对自己小小的鼓励下.😀(明天回家哦😊)
废话说完了,下面总结下项目中遇到的一些值得注意的小问题.只有踩过这些坑,你才会知道自己一直在学习的路上...
(1)WKWebView 加载本地html问题
WKWebView是不允许通过loadRequest的方法来加载本地根目录的HTML文件。而在iOS9的SDK中加入了以下方法来加载本地的HTML文件:
[WKWebView loadFileURL:allowingReadAccessToURL:]
但是在iOS9以下的版本是没提供这个便利的方法的。以下为解决方案的思路,就是在iOS9以下版本时,先将本地HTML文件的数据copy到tmp目录中,然后再使用loadRequest来加载。但是如果在HTML中加入了其他资源文件,例如js,css,image等必须一同copy到temp中。
(2)HUD 显示延时
若hud显示后 有做耗时操作,则会出现这种情况.这种情况有好几种解决方案,我这里采用最简洁的方式:
//主动开启一个运行循环,进行重绘
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
(3)MJExtension解析数据,数据类型问题
使用MJ解析服务器返回的数据,若模型中的属性类型,实际与服务器定义的类型不一致时, 则很有可能在别处使用模型中的属性来做一个事时,产生类型不一致的错误.
例如:服务器返回的类型是 int , 你用 NSString 来接受.但是实际上这个属性的真实类型是 NSNumber.
(4)UILabel关于设置lineBreakMode属性
UILabel设置lineBreakMode属性时,必须是已经给UILabel的text属性赋值完后,才会生效.
(5)极光自定义消息
极光自定义消息,实质上就是一个长连接,程序如果切到后台或被杀死,则此链接无效,收不到消息.
(6)UIButton 关于设置图片的填充模式contentmode
UIButton设置图片的填充模式contentmode必须是[UIButton setImage: forState:]与[UIButton.imageView setContentMode:]成对存在.
(7)MJRefresh下拉刷新触发距离控制
MJRefresh中并没有直接设置触发刷新的距离设置,但是我们可以通过直接设置MJ下拉控件的高度,来间接的控制触发距离.
(8)WkWebView的交互问题
WkWebView不支持JavaScriptCore,也就是说js调native方法只能在APP端,初始化WkWebView时通过提前注册方法名,并在代理中进行方法名的判断,然后调用native方法,而H5端必须通过'window.webkit.messageHandlers.<name>.postMessage("")'这样的方式进行调用,这样就增大的h5的工作量需要针对iOS和安卓写两套代码.
(9)UIWebview和WkWebView的调用线程问题
UIWebview和WkWebView使用时,其OC调用JS或JS调用OC都必须在主线程中执行,否则会出现意想不到的情况.
(10)关于直播界面的上的聊天控件
这一部分是个难点,也是个重点.由于没采用第三方,纯手工敲出来的自定义控件.这里我只说下难点,等以后有时间再详说这一部分.做这个有三大需要注意的地方:1.建立长连接,监听消息;2.定义数据缓存池,特定线程进行数据的添加或删除;3.视图控件上的自定义交互事件.
网友评论