alibaba / alibaba/flutter_boost
[Bug]:iOS 容器内存泄露 FlutterSDK-3.10.6 FlutterBoost-4.4.0
- Dominant language
- Dart
- Stars
- 7.2k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
### 请描述遇到的问题,以及您所期望的正确的结果
问题:
1.使用 FlutterBoost提供的 Demo 工程,在首页 Push 一个 Flutter 容器页面;
2.在 Flutter 容器页面,返回到上一级首页页面,容器 FBFlutterViewContainer 的 dealloc 没调用,内存泄露;
3.再次点击 push Flutter 容器之后,FBFlutterViewContainer 的 dealloc 才被调用;
4.再次从 FBFlutterViewContainer 返回上一级页面,dealloc 没调用,内存泄露;
期望:
1. 容器 FBFlutterViewContainer 的 dealloc 正常调用,内存释放;
### 请说明如何操作会遇到上述问题
1.使用 FlutterBoost提供的 Demo 工程,在首页 Push 一个 Flutter 容器页面;
2.在 Flutter 容器页面,返回到上一级首页页面,容器 FBFlutterViewContainer 的 dealloc 没调用,内存泄露;
3.再次点击 push Flutter 容器之后,FBFlutterViewContainer 的 dealloc 才被调用;
4.再次从 FBFlutterViewContainer 返回上一级页面,dealloc 没调用,内存泄露;
### 在下面填入关键复现代码
- (void)dealloc {
if (self.removeEventCallback != nil) {
self.removeEventCallback();
}
[NSNotificationCenter.defaultCenter removeObserver:self];
_leftEdgeGesture.delegate = nil;
}
以上方法,在 Flutter 容器页面退出时,没有被调用。
### 复现的平台
iOS
### Flutter SDK版本
3.10.6
### FlutterBoost版本
4.4.0
### 是否延迟初始化FlutterBoost
No
### 解决方案
1.在 3.7.0 ~ 3.7.12 的版本,在 FlutterViewController 容器页面退出时,dealloc 会调用,正常释放;
2.猜测和 impller 的引擎有关系;
3.没具体是探究,待后面有时间探究一下;
Contributor guide
No contributing guide indexed for this repository
Research direction
Run the FlutterBoost Demo and reproduce the navigation sequence involving FBFlutterViewContainer, then inspect its dealloc path and the related FlutterViewController lifecycle. Compare the reported behavior on Flutter SDK 3.10.6/FlutterBoost 4.4.0 with 3.7.0–3.7.12; done means the container deallocates and releases memory when leaving the Flutter page.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart, flutter, ios, objective-c
- Domain
- mobile, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 32/100