首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IOS开发中滑动页面时NSTimer停止的问题

我们在做倒计时的时候,发现当你手指按着屏幕不放,拖动tableView滑动的时候,写在cell上得倒计时停止倒计时,松开继续倒计时。研究发现就是拖动tableView滑动时,NSTimer停止了。...currentRunloop]我们可以得到一个当前线程下面对应的runloop对象,不过我们需要注意的是不同的runloop之间消息的通知方式。...接着上面的话题,在开启一个NSTimer实质上是在当前的runloop中注册了一个新的事件源,而当scrollView滚动的时候,当前的 MainRunLoop是处于UITrackingRunLoopMode...NSRunLoopCommonModes]; return self; } } return self; } 说到这里,在http异步通信的模块中也有可能碰到这样的问题...,就是在向服务器异步获取图片数据通知主线程刷新tableView中的图片时,在 tableView滚动没有停止或用户手指停留在屏幕上的时候,图片一直不会出来,可能背后也是这个runloop的mode在做怪

1.8K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS开发中解决UIScrollView滚动时NSTimer失效的问题

    ,NSTimer就会失效。...我曾经遇到过这样的问题,但需求是即使滑动scrollView,NSTimer也不能失效,于是就好好地研究了下这个问题。最终发现是NSTimer选择的一个模式的问题。...代码: [[NSRunLoopcurrentRunLoop] addTimer:self.timerforMode:NSDefaultRunLoopMode]; 我们将timer添加到当前的主线程中...在选择这个默认的模式之后,如果我们不与UI进行交互那么NSTimer是有效的,如果我们与UI进行交互那么主线程runloop就会转到UITrackingRunLoopMode模式下,不能处理定时器,从而定时器失效...2.开启一个新的线程,让定时器在新的线程中进行定义,这时定时器就会被子线程中的runloop处理。

    1.4K20

    iOS开发之UITableView中计时器的几种实现方式(NSTimer、DispatchSource、CADisplayLink)

    接下来我们先来总结一下本篇博客所涉及的四种方式: 第一种就是直接在TableView的Cell上使用NSTimer,当然这种方式是有问题的,稍后会介绍。...二、将Timer添加到CommonMode中 上一部分的定时器是不能正常运行的,因为NSTimer对象默认添加到了当前RunLoop的DefaultMode中,而在切换成TrackingRunLoopMode...解决该问题最直接方法是,将NSTimer在TrackingRunLoopMode中也添加一份。...如果你对RunLoop比较熟悉的话,可以知道CommonModes就是DefaultMode和TrackingRunLoopMode的集合,所以我们只需要将NSTimer对象与当前线程所对应的RunLoop...在上述代码中我们可以看到我们使用全局的并行队列来异步创建了一个Timer对象,然后将该对象添加进了该异步线程中的DefaultRunLoopMode中,然后运行该RunLoop。

    1.5K70

    DDD 中的几个困难问题

    DDD 软件建模就是业务问题和解决方案之间的桥梁。领域是问题,设计出来的模型是解的一部分。因此,问题和解形如 x 和 f(x) 的关系,f = 软件建模过程。...数据在磁盘中的组织形式使用了集合+关联的方式存放,这是由于我们为了降低数据冗余和方便查询而不得已为之。这就是关系模型和对象模型的差异,而不得不采用一些技术方法转换(ORM)。...充血模型已经是很多 DDD 实践者的潜在认知,简单来说就是把业务行为放到模型中。 这种做法看似满足了面向对象的实践,但是在实际工作中,它并不方便,甚至有些别扭。...如何清晰的分层? 分层有两个原则: 分层是有明确目的,没有目的的分层会带来额外的问题。 分层需要考虑框架、库的实现,否则容易带了 “千层饼架构”。...比如 JPA 是一种持久化实现,需要从领域层输入对象的类型信息和数据信息,客体就是泛型对象。 多对多关系一般怎么处理? 多对多就是客体的含混不清,迷失了中间模型。

    40210

    iOS中TableView的不同类型

    TableView是iOS开发中经常用到的View,针对不同的显示需求,我们需要不同的Cell来进行显示,比较复杂的显示我们一般会自定义Cell的样式,但是简单的显示就可以靠iOS本身支持的列表类型了。...iOS目前支持四中列表类型,分别是: UITableViewCellStyleDefault:默认类型,可以显示图片和文本 UITableViewCellStyleSubtitle:可以显示图片、文本和子文本...要设置也很简单,代码如下: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath...,支持显示图片和文本 { NSString *CellOne = @"CellOne"; // 设置tableview类型...UITableViewCellStyleValue2类型,支持显示文本以及子文本 { NSString *CellFour = @"CellFour"; // 设置tableview

    1.2K20

    浅析 NSTimer 和 CADisplayLink 内存泄漏

    第一种就是直接在 TableView 的 Cell 上使用 NSTimer,然后添加到当前线程所对应的 RunLoop 中的 commonModes 中。...我们开启了一个新的线程,并且将 CADisplayLink 对象添加到这个子线程的 RunLoop 中,然后在主线程中更新UI即可。...据官方介绍可知,- invalidate 做了两件事,首先是把本身(定时器)从 NSRunLoop 中移除,然后就是释放对 target 对象的强引用。从而解决定时器带来的内存泄漏问题。...(image-d0e3cd-1528529178817)] 如图所示,在开发中,如果创建定时器只是简单的计时,不做其他引用,那么 timer 对象与 myClock 对象循环引用的问题就可以避免(即省略...(image-527020-1528529178817)] 为了解决 timer 与 myClock 之间类似死锁的问题,我们会将定时器中的 target 对象替换成定时器自己,采用分类实现。

    1.6K10

    浅析RunLoop原理及其应用

    NSRunLoop和CFRunLoopRef都代表着RunLoop对象,它们是等价的,可以互相转换。...每个线程,包括程序的主线程( main thread )都有与之相对应的 RunLoop对象。...4.RunLoop的应用 例如创建一个比较常见的注册页面,里面用NSTimer来自处理常见的验证码倒计时,每秒处理一下,如果NSTimer添加到的是默认模式的RunLoop这时候注册页面有一个展示注册协议的...此时解决上面的问题就需要用到NSRunLoopCommonModes(占位模式),这个模式相当于把NSTimer在两种模式下都添加了,这就不难理解为什么NSRunLoopCommonModes是一个复数形式了...如果觉得NSTimer设置RunLoop模式很复杂可以尝试用GCD的Timer用法很简便。 ? RunLoop在TableView中的应用(解决滑动卡顿问题)。 ?

    97520

    Golang面向对象中易混淆的几个概念

    Golang作为相对较晚出的一门语言,吸收了过往语言的不足和优点,在面向对象的三大特性,封装,继承,多态方面,自然也有不少有别于过往语言的独特设计和思想,本篇是有关golang面向对象的几个易混淆的常用的概念...Go是否为一门面向对象的语言:是,也不是。 虽然Go语言可以通过定义类型和方法来实现面向对象的设计风格,但是Go是实际上并没有继承,类这一说法。...本篇提到的golang的面向对象以及面向对象的三大特性,均省略了风格两字。...,Text和Name相当于类中的成员变量,(a *A) Say()中的a是A结构体变量作为方法接收器,实现了类的成员方法。...这本质上与函数参数应该是值还是指针是同一个问题。 方法接收器为何不推荐用this,self 虽然看到不少人不少地方这么用,但还是不推荐。

    40520

    Flutter中几个常见的小白问题

    五、type 'String' is not a subtype of type 'int' in type cast 没什么可说的,就是类型转换错误,常见于json解析中。除了仔细检查别无选择。...六、运行android时提示Bad UTF-8 引起这个问题的原因太多了,不好详述。但是我可以告诉你一个办法。...最简单的就是安装一个AndroidStudio,然后在项目上右键,选择Flutter: ? 打开安装项目 然后点击Run: ? 运行按钮 一般来说,运行一下,控制台就会告诉你究竟有什么问题。.../gradlew assembleDebug 在Windows下: gradlew assembleDebug 终端会给出相应的错误信息,一般来说都能解决问题。...compileSdkVersion 八、我的java文件怎么全飘红了 我的java文件全红了,而且自动提示也没了。 ? 红了 你为什么要在Flutter工程中编写原生代码?

    8.7K30

    数据迁移中的几个问题总结

    总体来说,需要做的事情就是把核心业务服务器从一个机房迁移到另外一个机房,这个过程中因为环境的重要性和硬件软件的情况,大体分为了下面三个方向的技术方案。...a 这些工作需要在几个小时内全部完成,而且保证不能出现数据类问题。...迁移的需求大体如上所述,维护时间是限定的,需要不到3个小时的时间内搞定,要么成功要么回退。 我拿出几个迁移中碰到的问题,很多还是很有代表性,也是我们做技术方案的时候需要不断改进和完善的地方。...exec dbms_mview.refresh('TLBB.PURSE_RESERVE_RECORD','F'); 上面的两类问题在时间不等人的数据迁移中,是很敏感的,所以如果这种一下,表数据量不是太大...,排查的过程会因为信息提供的误差而偏离问题的方向。

    1.2K70

    深入浅出 RunLoop(五):RunLoop 与 NSTimer

    解决 tableview 滑动时 NSTimer 失效的问题 问题:由前面的文章我们知道,RunLoop同一时间只能运行在一种模式下,当我们滑动tableview/scrollview的时候RunLoop...NSTimer的创建方式 如果我们是通过以下方法创建的NSTimer,是自动添加到RunLoop的默认模式下的 [NSTimer scheduledTimerWithTimeInterval:1.0...是不会自动添加到RunLoop中的,所以一定要记得手动添加,否则NSTimer不生效。...添加到RunLoop的 _commonModeItems 集合中,并同步该timer到 _commonModes 里的所有模式中,这样无论在默认模式还是界面追踪模式下NSTimer都可以执行。...和 CADisplayLink 存在的问题 不准时:NSTime和CADisplayLink底层都是基于RunLoop的CFRunLoopTimerRef的实现的,也就是说它们都依赖于RunLoop。

    81110

    Nacos部署中的几个常见问题

    ---- 开个帖子,汇总几个读者经常提到的一些问题 问题一:Ubuntu下启动Nacos报错 问题描述 使用命令 sh startup.sh-m standalone启动报错: ..../startup.sh-m standalone启动 问题二:Failed to create database '/data/soft/nacos/data/derby-data' 问题描述 使用命令...org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ... 70 common frames omitted 解决方法 删除报错信息中的...http://blog.didispace.com/nacos-faqs/ 欢迎留言补充与交流 ---- 推荐阅读: 永远不要在 MySQL 中使用“utf8” Sentinel Dashboard中的修改如何同步到...Apollo 大规模使用 Apache Kafka 的20个最佳实践 永远不要在代码中使用「User」这个单词 复仇者联盟与IntelliJ IDEA也很配哦

    3.9K20

    Java中List遍历的几个问题

    :  foreach遍历JDK5.0增加的增强for循环,foreach在遍历过程中是通过一个临时变量,记录遍历到的当前List中的element,所以在 foreach中操作的对象是指向临时变量的,而不是...List中的element实例对象的地址,结果自然就只是修改临时变量的值并没修改List中的element,所以才会出现:foreach增强for循环中修改List中element的值是无效的问题; ...:  这个问题是和Iterator的实现方式有关系的,以ArrayList为例,在ArrayList中.iterator()其实是通过工厂模式在内部new出来一个Iterator对象,而且这个Iterator...); 可以理解为Stream操作的对象是Collection)集合对象自身而不是集合Collection中的element,而且Stream中的各个方法都是一旦开始执行就没有回头路,只能等待全部执行完成...parallelStream以外】这个结果不知道正确不;  测试的几个问题:  1.在测试过程中发现同样的Size测试几次结果几乎每次都有细微的差异,个人分析认为是和测试时手机状态有关系,不同时间手机系统内部不同操作导致

    1.3K10

    硅波导加工中的几个小问题

    这篇笔记整理下硅波导加工中的几个小问题。 典型的SOI(silicon on insulator)晶圆截面如下图所示, ?...目前,文献2采用在850℃的氢气中退火的方法,实现了在O波段下0.1dB/cm的传输损耗。 ? (图片来自文献5) 刻蚀的速率与开口区域的大小有关,并直接影响最终波导的形貌。...如果没有添加dummy结构,局部的波导会导致表面的不平整,形成一个小凸起,不利于后续的CMP处理,而添加dummy结构后,可以有效地解决这一问题,如下图所示。 ?...从设计者的角度,需要充分理解工艺,在设计过程中,考虑到加工的不完美性。往往需要经过多次迭代,和foundry之间深度合作,才能实现性能比较优异的器件。...文章中如果有任何错误和不严谨之处,还望大家不吝指出,欢迎大家留言讨论。也欢迎大家向我提问,小豆芽会尽自己的能力给出解释。

    3.4K23
    领券