Fixed: added optimization for releasing observers

This commit is contained in:
Alexandre Wilhelm
2014-08-20 16:13:59 -07:00
parent bd20050db8
commit 1fcf13d149
7 changed files with 59 additions and 3 deletions
+6
View File
@@ -97,6 +97,9 @@
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
if (_documentView)
@@ -105,6 +108,9 @@
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
if (_documentView)
@@ -414,6 +414,9 @@ var CPZeroKeyCode = 48,
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[[CPNotificationCenter defaultCenter] removeObserver:self name:CPDatePickerElementTextFieldBecomeFirstResponder object:self];
@@ -421,6 +424,9 @@ var CPZeroKeyCode = 48,
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
[[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_datePickerElementTextFieldBecomeFirstResponder:) name:CPDatePickerElementTextFieldBecomeFirstResponder object:self];
@@ -554,6 +560,9 @@ var CPZeroKeyCode = 48,
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[[CPNotificationCenter defaultCenter] removeObserver:self name:CPDatePickerElementTextFieldAMPMChangedNotification object:_textFieldPMAM];
@@ -561,6 +570,9 @@ var CPZeroKeyCode = 48,
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
[[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_datePickerElementTextFieldAMPMChangedNotification:) name:CPDatePickerElementTextFieldAMPMChangedNotification object:_textFieldPMAM];
@@ -65,9 +65,6 @@ var CONTROL_HEIGHT = 16.,
[self addSubview:_subtractButton];
[self setAutoresizingMask:CPViewWidthSizable];
var center = [CPNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(_textDidChange:) name:CPControlTextDidChangeNotification object:nil];
}
- (CPButton)_createRowButton
@@ -481,6 +478,26 @@ var CONTROL_HEIGHT = 16.,
[self layoutSubviews];
}
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
[[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_textDidChange:) name:CPControlTextDidChangeNotification object:nil];
}
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[[CPNotificationCenter defaultCenter] removeObserver:self name:CPControlTextDidChangeNotification object:nil];
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
+6
View File
@@ -125,6 +125,9 @@ var RECENT_SEARCH_PREFIX = @" ";
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[[CPNotificationCenter defaultCenter] removeObserver:self name:CPControlTextDidChangeNotification object:self];
@@ -132,6 +135,9 @@ var RECENT_SEARCH_PREFIX = @" ";
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
[[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_searchFieldTextDidChange:) name:CPControlTextDidChangeNotification object:self];
+6
View File
@@ -5127,12 +5127,18 @@ Your delegate can implement this method to avoid subclassing the tableview to ad
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[self _stopObservingFirstResponder];
}
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
[self _startObservingFirstResponder];
}
+6
View File
@@ -822,12 +822,18 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
- (void)_removeObservers
{
if (!_isObserving)
return;
[super _removeObservers];
[self _setObserveWindowKeyNotifications:NO];
}
- (void)_addObservers
{
if (_isObserving)
return;
[super _addObservers];
if ([self window] === self)
+3
View File
@@ -842,6 +842,9 @@ var CPViewFlags = { },
- (void)_removeObservers
{
if (!_isObserving)
return;
var count = [_subviews count];
while (count--)