diff --git a/Schemas/configuration.json b/Schemas/configuration.json index 11aeca211..b66510699 100644 --- a/Schemas/configuration.json +++ b/Schemas/configuration.json @@ -26,7 +26,8 @@ "exp_dispatch_apply", "exp_image_downloader_priority", "exp_text_drawing", - "exp_fix_range_controller" + "exp_fix_range_controller", + "exp_oom_bg_dealloc_disable" ] } } diff --git a/Source/ASExperimentalFeatures.h b/Source/ASExperimentalFeatures.h index 287c910bf..f5650be83 100644 --- a/Source/ASExperimentalFeatures.h +++ b/Source/ASExperimentalFeatures.h @@ -32,6 +32,7 @@ typedef NS_OPTIONS(NSUInteger, ASExperimentalFeatures) { ASExperimentalImageDownloaderPriority = 1 << 11, // exp_image_downloader_priority ASExperimentalTextDrawing = 1 << 12, // exp_text_drawing ASExperimentalFixRangeController = 1 << 13, // exp_fix_range_controller + ASExperimentalOOMBackgroundDeallocDisable = 1 << 14, // exp_oom_bg_dealloc_disable ASExperimentalFeatureAll = 0xFFFFFFFF }; diff --git a/Source/ASExperimentalFeatures.mm b/Source/ASExperimentalFeatures.mm index 4dfe5ddde..0badb9fcf 100644 --- a/Source/ASExperimentalFeatures.mm +++ b/Source/ASExperimentalFeatures.mm @@ -25,7 +25,8 @@ @"exp_dispatch_apply", @"exp_image_downloader_priority", @"exp_text_drawing", - @"exp_fix_range_controller"])); + @"exp_fix_range_controller", + @"exp_oom_bg_dealloc_disable"])); if (flags == ASExperimentalFeatureAll) { return allNames; } diff --git a/Source/ASViewController.mm b/Source/ASViewController.mm index d27f47238..a1151e00d 100644 --- a/Source/ASViewController.mm +++ b/Source/ASViewController.mm @@ -15,6 +15,8 @@ #import #import #import +#import +#import @implementation ASViewController { @@ -98,6 +100,9 @@ - (void)_initializeInstance - (void)dealloc { + if (ASActivateExperimentalFeature(ASExperimentalOOMBackgroundDeallocDisable)) { + return; + } ASPerformBackgroundDeallocation(&_node); } diff --git a/Tests/ASConfigurationTests.mm b/Tests/ASConfigurationTests.mm index 5738edc31..aa0e3a49d 100644 --- a/Tests/ASConfigurationTests.mm +++ b/Tests/ASConfigurationTests.mm @@ -31,7 +31,8 @@ ASExperimentalDispatchApply, ASExperimentalImageDownloaderPriority, ASExperimentalTextDrawing, - ASExperimentalFixRangeController + ASExperimentalFixRangeController, + ASExperimentalOOMBackgroundDeallocDisable }; @interface ASConfigurationTests : ASTestCase @@ -57,7 +58,8 @@ + (NSArray *)names { @"exp_dispatch_apply", @"exp_image_downloader_priority", @"exp_text_drawing", - @"exp_fix_range_controller" + @"exp_fix_range_controller", + @"exp_oom_bg_dealloc_disable" ]; }