Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit dc3b5ad

Browse files
Peter Arganyfacebook-github-bot
Peter Argany
authored andcommittedNov 4, 2019
Remove unneeded NSNotification center removeObserver
Summary: A very common pattern I've seen in RN codebase: - (instancetype) init { [[NSNotificationCenter defaultCenter] addObserver:self ...] } - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self ...] } From Apple: https://developer.apple.com/documentation/foundation/nsnotificationcenter/1413994-removeobserver?language=objc > If your app targets iOS 9.0 and later or macOS 10.11 and later, you don't need to unregister an observer in its dealloc method. RN targets iOS9+ Changelog: [Internal][Cleanup] Remove unneeded NSNotification center removeObserver Reviewed By: shergin Differential Revision: D18264235 fbshipit-source-id: 684e5f5555cec96b055b13cd83daaeb393f4fac9
1 parent 56c7ae7 commit dc3b5ad

25 files changed

+5
-99
lines changed
 

‎Libraries/CameraRoll/RCTImagePickerManager.mm

-5
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,6 @@ + (BOOL)requiresMainQueueSetup
5959
return NO;
6060
}
6161

62-
- (void)dealloc
63-
{
64-
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"AVCaptureDeviceDidStartRunningNotification" object:nil];
65-
}
66-
6762
- (dispatch_queue_t)methodQueue
6863
{
6964
return dispatch_get_main_queue();

‎Libraries/Image/RCTAnimatedImage.m

-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ - (void)dealloc
164164
CFRelease(_imageSource);
165165
_imageSource = NULL;
166166
}
167-
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
168167
}
169168

170169
@end

‎Libraries/Image/RCTImageCache.m

-5
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ - (instancetype)init
5454
return self;
5555
}
5656

57-
- (void)dealloc
58-
{
59-
[[NSNotificationCenter defaultCenter] removeObserver:self];
60-
}
61-
6257
- (void)clearCache
6358
{
6459
[_decodedImageCache removeAllObjects];

‎Libraries/Image/RCTImageView.m

-5
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,6 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge
103103
return self;
104104
}
105105

106-
- (void)dealloc
107-
{
108-
[[NSNotificationCenter defaultCenter] removeObserver:self];
109-
}
110-
111106
RCT_NOT_IMPLEMENTED(- (instancetype)init)
112107

113108
RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)

‎Libraries/Image/RCTUIImageViewAnimated.m

-1
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,6 @@ - (void)dealloc
311311
// Removes the display link from all run loop modes.
312312
[_displayLink invalidate];
313313
_displayLink = nil;
314-
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
315314
}
316315

317316
- (void)didReceiveMemoryWarning:(NSNotification *)notification

‎Libraries/Settings/RCTSettingsManager.mm

-5
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@ - (instancetype)initWithUserDefaults:(NSUserDefaults *)defaults
5252
return self;
5353
}
5454

55-
- (void)dealloc
56-
{
57-
[[NSNotificationCenter defaultCenter] removeObserver:self];
58-
}
59-
6055
- (facebook::react::ModuleConstants<JS::NativeSettingsManager::Constants>)constantsToExport
6156
{
6257
return (facebook::react::ModuleConstants<JS::NativeSettingsManager::Constants>)[self getConstants];

‎Libraries/Text/Text/RCTTextViewManager.m

-5
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ - (void)setBridge:(RCTBridge *)bridge
5050
lazilyLoadIfNecessary:YES]];
5151
}
5252

53-
- (void)dealloc
54-
{
55-
[[NSNotificationCenter defaultCenter] removeObserver:self];
56-
}
57-
5853
- (UIView *)view
5954
{
6055
return [RCTTextView new];

‎Libraries/Text/TextInput/Multiline/RCTUITextView.m

-5
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ - (instancetype)initWithFrame:(CGRect)frame
5151
return self;
5252
}
5353

54-
- (void)dealloc
55-
{
56-
[[NSNotificationCenter defaultCenter] removeObserver:self];
57-
}
58-
5954
#pragma mark - Accessibility
6055

6156
- (void)setIsAccessibilityElement:(BOOL)isAccessibilityElement

‎Libraries/Text/TextInput/RCTBaseTextInputViewManager.m

-5
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,6 @@ - (void)setBridge:(RCTBridge *)bridge
9595
lazilyLoadIfNecessary:YES]];
9696
}
9797

98-
- (void)dealloc
99-
{
100-
[[NSNotificationCenter defaultCenter] removeObserver:self];
101-
}
102-
10398
#pragma mark - RCTUIManagerObserver
10499

105100
- (void)uiManagerWillPerformMounting:(__unused RCTUIManager *)uiManager

‎Libraries/Text/TextInput/Singleline/RCTUITextField.m

-5
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ - (instancetype)initWithFrame:(CGRect)frame
3232
return self;
3333
}
3434

35-
- (void)dealloc
36-
{
37-
[[NSNotificationCenter defaultCenter] removeObserver:self];
38-
}
39-
4035
- (void)_textDidChange
4136
{
4237
_textWasPasted = NO;

‎RNTester/RNTesterUnitTests/RCTModuleInitNotificationRaceTests.m

-5
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,6 @@ - (void)didInitViewManager:(NSNotification *)note
6262
}
6363
}
6464

65-
- (void)dealloc
66-
{
67-
[[NSNotificationCenter defaultCenter] removeObserver:self];
68-
}
69-
7065
@end
7166

7267
@interface RCTModuleInitNotificationRaceTests : XCTestCase <RCTBridgeDelegate>

‎React/Base/RCTRootView.m

-1
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,6 @@ - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
385385

386386
- (void)dealloc
387387
{
388-
[[NSNotificationCenter defaultCenter] removeObserver:self];
389388
[_contentView invalidate];
390389
}
391390

‎React/Base/Surface/RCTSurface.mm

-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge
106106
- (void)dealloc
107107
{
108108
[self _stop];
109-
[[NSNotificationCenter defaultCenter] removeObserver:self];
110109
}
111110

112111
#pragma mark - Immutable Properties (no need to enforce synchronization)

‎React/CoreModules/RCTAccessibilityManager.mm

-5
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,6 @@ - (instancetype)init
9494
return self;
9595
}
9696

97-
- (void)dealloc
98-
{
99-
[[NSNotificationCenter defaultCenter] removeObserver:self];
100-
}
101-
10297
- (void)didReceiveNewContentSizeCategory:(NSNotification *)note
10398
{
10499
self.contentSizeCategory = note.userInfo[UIContentSizeCategoryNewValueKey];

‎React/CoreModules/RCTDeviceInfo.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
#import <UIKit/UIKit.h>
99

1010
#import <React/RCTBridge.h>
11-
#import <React/RCTBridgeModule.h>
1211

13-
@interface RCTDeviceInfo : NSObject <RCTBridgeModule, RCTInvalidating>
12+
@interface RCTDeviceInfo : NSObject <RCTBridgeModule>
1413

1514
@end

‎React/CoreModules/RCTDeviceInfo.mm

-13
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,6 @@ static BOOL RCTIsIPhoneX() {
112112
};
113113
}
114114

115-
- (void)dealloc
116-
{
117-
[NSNotificationCenter.defaultCenter removeObserver:self];
118-
}
119-
120-
- (void)invalidate
121-
{
122-
RCTExecuteOnMainQueue(^{
123-
self->_bridge = nil;
124-
[[NSNotificationCenter defaultCenter] removeObserver:self];
125-
});
126-
}
127-
128115
- (NSDictionary<NSString *, id> *)constantsToExport
129116
{
130117
return [self getConstants];

‎React/CoreModules/RCTTiming.mm

-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ - (void)dealloc
160160
{
161161
[self markEndOfBackgroundTaskIfNeeded];
162162
[_sleepTimer invalidate];
163-
[[NSNotificationCenter defaultCenter] removeObserver:self];
164163
}
165164

166165
- (void)markStartOfBackgroundTaskIfNeeded

‎React/DevSupport/RCTDevLoadingView.m

-5
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ + (void)setEnabled:(BOOL)enabled
3434
isEnabled = enabled;
3535
}
3636

37-
- (void)dealloc
38-
{
39-
[[NSNotificationCenter defaultCenter] removeObserver:self];
40-
}
41-
4237
+ (BOOL)requiresMainQueueSetup
4338
{
4439
return YES;

‎React/DevSupport/RCTDevMenu.m

+2-4
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,7 @@ - (void)invalidate
157157
{
158158
_presentedItems = nil;
159159
[_actionSheet dismissViewControllerAnimated:YES
160-
completion:^(void){
161-
}];
162-
[[NSNotificationCenter defaultCenter] removeObserver:self];
160+
completion:^(void){}];
163161
}
164162

165163
- (void)showOnShake
@@ -425,7 +423,7 @@ - (void)setDefaultJSBundle
425423

426424
_presentedItems = items;
427425
[RCTPresentedViewController() presentViewController:_actionSheet animated:YES completion:nil];
428-
426+
429427
[_bridge enqueueJSCall:@"RCTNativeAppEventEmitter"
430428
method:@"emit"
431429
args:@[@"RCTDevMenuShown"]

‎React/Fabric/RCTSurfacePresenterBridgeAdapter.mm

-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge contextContainer:(ContextCont
9292
- (void)dealloc
9393
{
9494
[_surfacePresenter suspend];
95-
[self _removeBridgeObservers:_bridge];
9695
}
9796

9897
- (RCTBridge *)bridge

‎React/Modules/RCTDevSettings.mm

-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ - (void)invalidate
204204
#if ENABLE_PACKAGER_CONNECTION
205205
[[RCTPackagerConnection sharedPackagerConnection] removeHandler:_reloadToken];
206206
#endif
207-
[[NSNotificationCenter defaultCenter] removeObserver:self];
208207
}
209208

210209
- (NSArray<NSString *> *)supportedEvents

‎React/Modules/RCTRedBox.m

-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ - (void)dealloc
210210
{
211211
_stackTraceTableView.dataSource = nil;
212212
_stackTraceTableView.delegate = nil;
213-
[[NSNotificationCenter defaultCenter] removeObserver:self];
214213
}
215214

216215
- (NSString *)stripAnsi:(NSString *)text

‎React/Modules/RCTTVNavigationEventEmitter.m

-5
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ - (instancetype)init
3232
return self;
3333
}
3434

35-
- (void)dealloc
36-
{
37-
[[NSNotificationCenter defaultCenter] removeObserver:self];
38-
}
39-
4035
- (NSArray<NSString *> *)supportedEvents
4136
{
4237
return @[TVNavigationEventName];

‎React/Modules/RCTUIManager.m

+2-7
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ + (BOOL)requiresMainQueueSetup
8888
return NO;
8989
}
9090

91-
- (void)dealloc
92-
{
93-
[NSNotificationCenter.defaultCenter removeObserver:self];
94-
}
95-
9691
- (void)invalidate
9792
{
9893
/**
@@ -339,9 +334,9 @@ - (NSString *)viewNameForReactTag:(NSNumber *)reactTag
339334
if (name) {
340335
return name;
341336
}
342-
337+
343338
UIView *view = _viewRegistry[reactTag];
344-
339+
345340
#pragma clang diagnostic push
346341
#pragma clang diagnostic ignored "-Wundeclared-selector"
347342

‎ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm

-5
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,6 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge delegate:(id<RCTTurboModuleMa
118118
return self;
119119
}
120120

121-
- (void)dealloc
122-
{
123-
[[NSNotificationCenter defaultCenter] removeObserver:self];
124-
}
125-
126121
- (void)notifyAboutTurboModuleSetup:(const char *)name
127122
{
128123
NSString *moduleName = [[NSString alloc] initWithUTF8String:name];

0 commit comments

Comments
 (0)
Please sign in to comment.