diff --git a/ios/Classes/Boost/FlutterBoostPlugin.h b/ios/Classes/Boost/FlutterBoostPlugin.h
index 04000dec2efd5b7f749402c147329339f0c7793f..2e3e38bdc50e81813deeda3e347a4a60b4d9074b 100755
--- a/ios/Classes/Boost/FlutterBoostPlugin.h
+++ b/ios/Classes/Boost/FlutterBoostPlugin.h
@@ -125,5 +125,12 @@ NS_ASSUME_NONNULL_BEGIN
         exts:(NSDictionary *)exts
 onPageFinished:(void (^)(NSDictionary *))resultCallback
   completion:(void (^)(BOOL))completion;
+
+//切记:在destroyPluginContext前务必将所有FlutterViewController及其子类的实例销毁。在这里是FLBFlutterViewContainer。否则会异常;以下是全部步骤
+//1. 首先通过为所有FlutterPlugin的methodChannel属性设为nil来解除其与FlutterEngine的间接强引用
+//2. 销毁所有的FlutterViewController实例(或保证所有FlutterVC已经退出),来解除其与FlutterEngine的强引用,在每个VC卸载的时候FlutterEngine会调用destroyContext
+//3. 调用FlutterBoostPlugin.destroyPluginContext函数来解除与其内部context的强引用。内部持有的FlutterEngine也会被卸载(非外部传入的情形)
+//4. 如果是外部传入的FlutterEngine,需要外部自己释放
+- (void)destroyPluginContext;
 @end
 NS_ASSUME_NONNULL_END
diff --git a/ios/Classes/Boost/FlutterBoostPlugin.m b/ios/Classes/Boost/FlutterBoostPlugin.m
index 0d33ec06ec3ee121cacc0827184b1d2369e3a85a..623c1de1356b920cde54bba83d7f3ce8323779ae 100755
--- a/ios/Classes/Boost/FlutterBoostPlugin.m
+++ b/ios/Classes/Boost/FlutterBoostPlugin.m
@@ -130,8 +130,8 @@
     __weak __typeof__(self) weakSelf = self;
     dispatch_once(&onceToken, ^{
         __strong __typeof__(weakSelf) self = weakSelf;
-        self.factory = FLBFactory.new;
-        self.application = [self->_factory createApplication:platform];
+        FLBFactory *factory = FLBFactory.new;
+        self.application = [factory createApplication:platform];
         [self.application startFlutterWithPlatform:platform
                                      withEngine:engine
                                        onStart:callback];
@@ -182,4 +182,9 @@
     id<FLBFlutterApplicationInterface> app = [[FlutterBoostPlugin sharedInstance] application];
     [app close:uniqueId result:resultData exts:exts completion:completion];
 }
+
+- (void)destroyPluginContext{
+    self.methodChannel = nil;
+    self.application = nil;
+}
 @end
diff --git a/ios/Classes/Boost/FlutterBoostPlugin_private.h b/ios/Classes/Boost/FlutterBoostPlugin_private.h
index db9068e7d940bd1b362d81e6b6b0b5e3875f8cd1..f0dcd913f33b886519619a2d1579c3fa8b7e3678 100644
--- a/ios/Classes/Boost/FlutterBoostPlugin_private.h
+++ b/ios/Classes/Boost/FlutterBoostPlugin_private.h
@@ -28,7 +28,6 @@
 #import "FlutterBoostPlugin.h"
 @interface FlutterBoostPlugin()
 @property (nonatomic,strong) id<FLBFlutterApplicationInterface> application;
-@property (nonatomic,strong) id<FLBAbstractFactory> factory;
 @property (nonatomic,strong) FlutterMethodChannel *methodChannel;
 @property (nonatomic,copy) NSString *fPageId;
 @property (nonatomic,copy) NSString *fPagename;
diff --git a/ios/Classes/Engine/FLBFlutterEngine.m b/ios/Classes/Engine/FLBFlutterEngine.m
index 5a90e33343c3841e64cf6b279473876ead8fde17..7e5678c496db3e95eb8ace406ac9f34070c9d686 100755
--- a/ios/Classes/Engine/FLBFlutterEngine.m
+++ b/ios/Classes/Engine/FLBFlutterEngine.m
@@ -105,11 +105,6 @@
                          arguments:@{@"type":@"foreground"}];
 }
 
-- (FlutterEngine *)engine
-{
-    return _engine;
-}
-
 - (void)atacheToViewController:(FlutterViewController *)vc
 {
     if(_engine.viewController != vc){
@@ -132,5 +127,8 @@
 //    [self detach];
 }
 
+- (void)dealloc{
+    [self.engine setViewController:nil];
+}
 @end