From c67acab29052d383ffe78869d022b85f4bbdfc70 Mon Sep 17 00:00:00 2001 From: Greg Bolsinga Date: Thu, 13 Jun 2019 15:42:24 -0700 Subject: [PATCH] Remove ASExperimentalTransactionOperationRetainCycle (#1547) * Remove ASExperimentalTransactionOperationRetainCycle --- Schemas/configuration.json | 1 - Source/ASExperimentalFeatures.h | 5 +-- Source/ASExperimentalFeatures.mm | 1 - .../_ASAsyncTransactionContainer.mm | 39 ++++++------------- Tests/ASConfigurationTests.mm | 2 - Tests/ASTransactionTests.mm | 33 ---------------- 6 files changed, 14 insertions(+), 67 deletions(-) diff --git a/Schemas/configuration.json b/Schemas/configuration.json index 71275e31..bffa63b7 100644 --- a/Schemas/configuration.json +++ b/Schemas/configuration.json @@ -24,7 +24,6 @@ "exp_did_enter_preload_skip_asm_layout", "exp_dispatch_apply", "exp_oom_bg_dealloc_disable", - "exp_transaction_operation_retain_cycle", "exp_remove_textkit_initialising_lock" ] } diff --git a/Source/ASExperimentalFeatures.h b/Source/ASExperimentalFeatures.h index 0eed8003..51849dfc 100644 --- a/Source/ASExperimentalFeatures.h +++ b/Source/ASExperimentalFeatures.h @@ -28,9 +28,8 @@ typedef NS_OPTIONS(NSUInteger, ASExperimentalFeatures) { ASExperimentalDidEnterPreloadSkipASMLayout = 1 << 7, // exp_did_enter_preload_skip_asm_layout ASExperimentalDispatchApply = 1 << 8, // exp_dispatch_apply ASExperimentalOOMBackgroundDeallocDisable = 1 << 9, // exp_oom_bg_dealloc_disable - ASExperimentalTransactionOperationRetainCycle = 1 << 10, // exp_transaction_operation_retain_cycle - ASExperimentalRemoveTextKitInitialisingLock = 1 << 11, // exp_remove_textkit_initialising_lock - ASExperimentalDrawingGlobal = 1 << 12, // exp_drawing_global + ASExperimentalRemoveTextKitInitialisingLock = 1 << 10, // exp_remove_textkit_initialising_lock + ASExperimentalDrawingGlobal = 1 << 11, // exp_drawing_global ASExperimentalFeatureAll = 0xFFFFFFFF }; diff --git a/Source/ASExperimentalFeatures.mm b/Source/ASExperimentalFeatures.mm index 665db4e5..9be1a316 100644 --- a/Source/ASExperimentalFeatures.mm +++ b/Source/ASExperimentalFeatures.mm @@ -22,7 +22,6 @@ NSArray *ASExperimentalFeaturesGetNames(ASExperimentalFeatures flags @"exp_did_enter_preload_skip_asm_layout", @"exp_dispatch_apply", @"exp_oom_bg_dealloc_disable", - @"exp_transaction_operation_retain_cycle", @"exp_remove_textkit_initialising_lock", @"exp_drawing_global"])); if (flags == ASExperimentalFeatureAll) { diff --git a/Source/Details/Transactions/_ASAsyncTransactionContainer.mm b/Source/Details/Transactions/_ASAsyncTransactionContainer.mm index 542b3ae0..4501a85f 100644 --- a/Source/Details/Transactions/_ASAsyncTransactionContainer.mm +++ b/Source/Details/Transactions/_ASAsyncTransactionContainer.mm @@ -56,33 +56,18 @@ self.asyncdisplaykit_asyncLayerTransactions = transactions; } __weak CALayer *weakSelf = self; - if (ASActivateExperimentalFeature(ASExperimentalTransactionOperationRetainCycle)) { - transaction = [[_ASAsyncTransaction alloc] initWithCompletionBlock:^(_ASAsyncTransaction *completedTransaction, BOOL cancelled) { - __strong CALayer *self = weakSelf; - if (self == nil) { - return; - } - [self.asyncdisplaykit_asyncLayerTransactions removeObject:completedTransaction]; - if (self.asyncdisplaykit_asyncLayerTransactions.count == 0) { - // Reclaim object memory. - self.asyncdisplaykit_asyncLayerTransactions = nil; - } - [self asyncdisplaykit_asyncTransactionContainerDidCompleteTransaction:completedTransaction]; - }]; - } else { - transaction = [[_ASAsyncTransaction alloc] initWithCompletionBlock:^(_ASAsyncTransaction *completedTransaction, BOOL cancelled) { - __strong CALayer *self = weakSelf; - if (self == nil) { - return; - } - [transactions removeObject:completedTransaction]; - if (transactions.count == 0) { - // Reclaim object memory. - self.asyncdisplaykit_asyncLayerTransactions = nil; - } - [self asyncdisplaykit_asyncTransactionContainerDidCompleteTransaction:completedTransaction]; - }]; - } + transaction = [[_ASAsyncTransaction alloc] initWithCompletionBlock:^(_ASAsyncTransaction *completedTransaction, BOOL cancelled) { + __strong CALayer *self = weakSelf; + if (self == nil) { + return; + } + [self.asyncdisplaykit_asyncLayerTransactions removeObject:completedTransaction]; + if (self.asyncdisplaykit_asyncLayerTransactions.count == 0) { + // Reclaim object memory. + self.asyncdisplaykit_asyncLayerTransactions = nil; + } + [self asyncdisplaykit_asyncTransactionContainerDidCompleteTransaction:completedTransaction]; + }]; [transactions addObject:transaction]; self.asyncdisplaykit_currentAsyncTransaction = transaction; [self asyncdisplaykit_asyncTransactionContainerWillBeginTransaction:transaction]; diff --git a/Tests/ASConfigurationTests.mm b/Tests/ASConfigurationTests.mm index ce9a10ba..97b75ccb 100644 --- a/Tests/ASConfigurationTests.mm +++ b/Tests/ASConfigurationTests.mm @@ -28,7 +28,6 @@ static ASExperimentalFeatures features[] = { ASExperimentalDidEnterPreloadSkipASMLayout, ASExperimentalDispatchApply, ASExperimentalOOMBackgroundDeallocDisable, - ASExperimentalTransactionOperationRetainCycle, ASExperimentalRemoveTextKitInitialisingLock, ASExperimentalDrawingGlobal }; @@ -53,7 +52,6 @@ static ASExperimentalFeatures features[] = { @"exp_did_enter_preload_skip_asm_layout", @"exp_dispatch_apply", @"exp_oom_bg_dealloc_disable", - @"exp_transaction_operation_retain_cycle", @"exp_remove_textkit_initialising_lock", @"exp_drawing_global" ]; diff --git a/Tests/ASTransactionTests.mm b/Tests/ASTransactionTests.mm index bd064fef..fa111cc7 100644 --- a/Tests/ASTransactionTests.mm +++ b/Tests/ASTransactionTests.mm @@ -52,41 +52,8 @@ XCTAssertNil(weakTransaction); } -- (void)testWeakWithSingleOperation_noExperiment -{ - __weak _ASAsyncTransaction* weakTransaction = nil; - @autoreleasepool { - CALayer *layer = [[CALayer alloc] init]; - _ASAsyncTransaction *transaction = layer.asyncdisplaykit_asyncTransaction; - - [transaction addOperationWithBlock:^id _Nullable{ - return nil; - } priority:1 - queue:dispatch_get_main_queue() - completion:^(id _Nullable value, BOOL canceled) { - ; - }]; - - weakTransaction = transaction; - layer = nil; - } - - // held by main transaction group - XCTAssertNotNil(weakTransaction); - - // run so that transaction group drains. - static NSTimeInterval delay = 0.1; - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:delay]]; - - XCTAssertNotNil(weakTransaction); // Oops! Experiment will fix this. -} - - (void)testWeakWithSingleOperation { - ASConfiguration *config = [[ASConfiguration alloc] initWithDictionary:nil]; - config.experimentalFeatures = ASExperimentalTransactionOperationRetainCycle; - [ASConfigurationManager test_resetWithConfiguration:config]; - __weak _ASAsyncTransaction* weakTransaction = nil; @autoreleasepool { CALayer *layer = [[CALayer alloc] init];