解决MJRefreshHeader中异步更改UI为Refreshing状态导致内部状态和UI状态不一致的问题#759
Open
myronlee wants to merge 1 commit intoCoderMJLee:masterfrom
Open
解决MJRefreshHeader中异步更改UI为Refreshing状态导致内部状态和UI状态不一致的问题#759myronlee wants to merge 1 commit intoCoderMJLee:masterfrom
myronlee wants to merge 1 commit intoCoderMJLee:masterfrom
Conversation
setSate中同步更改UI状态,异步更改UI状态将有可能导致“内部状态和UI状态不一致”的问题,如果中间设置state为idle的话(idle 状态更改UI状态是同步的)。
|
我的项目里面用了最新的MJRefresh,但是首次进入页面的时候,UITableView顶部就会有刷新提示显示出来,但是这时候并没有在刷新。。。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
详细描述可见我的博客文章
http://www.jianshu.com/p/0ecaf3d67940
在MJRefreshHeader类setState方法中“更改UI为refreshing状态”的操作是异步的。也就是说,设置Refreshing状态时,设置内部状态和设置UI状态被分离开了,如果在中间插入了设置内部状态(比如Idle)的操作可能会导致内部状态和UI状态不一致的问题。另外,MJRefreshendRefreshing方法中“设置状态为Idle”操作是异步的。
出现问题的原因就是两次异步,由于执行顺序的原因,导致内部状态和UI状态不一致。
设置refreshing状态如果需要异步,应该像设置idle状态一样,整体异步(beginRefreshing应该参考endRefreshing的实现,需要异步的话)这边不了解,可以自行修改