将refreshController列表声明为类外顶级变量报错,求原因解析
问题原因解析
这个报错的核心原因是全局共享的RefreshController会被多个SmartRefresher实例复用,具体来说:
当你把refreshController列表声明在类外部时,它属于全局变量,整个应用里所有用到这个列表的地方,共享的是同一组RefreshController对象。如果是在TabBarView这类多页面场景下,每个页面的SmartRefresher都会绑定同一个RefreshController,这会导致它们的刷新状态互相干扰——比如某个页面触发下拉刷新,其他页面的刷新状态也会被错误地触发,甚至出现控件状态混乱的bug。
而把refreshController列表放在类内部创建时,每个类的实例(比如TabBarView里的每个页面实例)都会拥有独立的RefreshController列表。每个SmartRefresher对应自己专属的控制器,状态完全独立,不会出现多个控件共用一个控制器的情况,自然就不会触发这个报错。
简单总结:每个SmartRefresher必须绑定专属的RefreshController,全局变量会导致复用冲突,类内部创建才能保证每个控件有自己独立的控制器。
内容的提问来源于stack exchange,提问作者SeFeed nzri
相关产品推荐
相关产品推荐

