问题描述: 最近使用给Flutter团队写view组件的时候,出现了触发Widget的频繁build的问题. 问题排查: Flutter的同事提到在flutter层,是因为 updateViewportMetrics 这个函数的频繁触发调用. 在iOS代码中查到,主要是因为 viewDidLayoutSubviews 这个生命周期函数的频繁触发调用. 首先,知道viewDidLayoutSubviews的触发原理,其中有一条是有sub view的frame更改. 排查代码,代码中并没有频繁更改f…
问题 在写flatlist复用组件时,调用的时候如果父组件是不定高的组件,会造成组件无法显示 如果父组件样式{flex:1},则会出现下拉方法频繁触发或不正常触发的问题(我这里出现的问题是在列表第6个项目在底部时,缓慢上拉会多次触发flatlist的onEndReached监听) 原因 推测是因为{flex:1}不适合做动态高度组件的父组件样式,会错误的判断高度导致onEndReached多次不正常触发. 解决 可以把列表上方所需的组件做成header属性传入组件当做flatlist的头部组件,…
开篇总结:其实目前无法解决这个bug. 这两天做项目遇到了这个case,项目需求是打开页面的时候,input元素自动弹起键盘.由于各种方面的考虑,我们希望通过setTimeout延时200毫秒让input元素focus,demo代码如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>IOS下setTimeout无…
方案:transitionDuration设为0: 如图,发现关闭tooltip后现象消失,猜测与tooltip有关. 经过仔细观察,鼠标在快速移动时tooltip会延迟移动,就是这个时间差,让鼠标悬浮在了tooltip上面,导致tooltip浮层阻止了地图的hover事件,然后tooltip浮层离开,鼠标再次触发了地图的hover: 就出现了悬浮事件无故频繁触发.过于灵敏感觉.…
一:背景 1. 讲故事 上个月底,有位朋友微信找到我,说他的程序 多线程处理 RabbitMQ 时过慢,帮忙分析下什么原因,截图如下: 这问题抛出来,有点懵逼,没说CPU爆高,也没说内存泄漏,也没说程序卡死...鬼知道为啥 Rabbitmq 处理过慢哈 . 既然没有一个缘由,那就往 freeze 这个方向去找吧,上 windbg 说话. 二:Windbg 分析 1. 寻找 freeze 原因 处理过慢原因有很多,可能是干活的人少了,也可能这些人摸鱼去了,总之工作不饱和,接下来看看这帮人有没有摸鱼…
原文:http://blog.csdn.net/redtopic/article/details/69396722 在处理诸如 resize.scroll.mousemove 和 keydown/keyup/keypress 等事件的时候,通常我们不希望这些事件太过频繁地触发,尤其是监听程序中涉及到大量的计算或者有非常耗费资源的操作. 有多频繁呢?以 mousemove 为例,根据 DOM Level 3 的规定,「如果鼠标连续移动,那么浏览器就应该触发多个连续的 mousemove 事件」,这…
我们都知道,在窗体上保存记录时,会像在表上保存时一样,触发很多方法.这里Reinhard找到了一个流程图,看看都触发了哪些方法,并且这些方法是以怎样的顺序被触发的. 窗体上数据源的Validate()方法被调用. 当Validate()方法里的Super()被调用时,该表的ValideField()  方法会被每个字段调用. Vlidate()方法里,Super()下面的代码被调用. 窗体上数据源的ValidateWrite()方法被调用. 当ValidateWrite()方法中的Super()…
ios下的Safari真是傲娇啊,坑好多. 首先上代码 <!DOCTYPE html> <html> <head> <title>122</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no"&…
事件处理机制 在iOS中发生触摸后,事件会加入到UIApplication事件队列(在这个系列关于iOS开发的第一篇文章中我们分析iOS程序原理的时候就说过程序运行后UIApplication会循环监听用户操作),UIApplication会从事件队列取出最前面的事件并分发处理,通常先分发给应用程序主窗口,主窗口会调用hitTest:withEvent:方法(假设称为方法A,注意这是UIView的方法),查找合适的事件触发视图(这里通常称为“hit-test view”): 在顶级视图(key…
十分清楚的记得以前在使用的时候,通过[_mTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];这一句话来达到效果的. 这次怎么试用都无效果,后来才想起来,一个区别,这里做记录: 一种是在strorbord中直接添加的tableview,一种是使用代码initwithframe来的. tableview在init的时候设置SeparatorStyle是无效的,只能在init之后再去设置才有效, 也就是, 当_mTableVi…