mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-11 21:27:11 +00:00
Fixed: during CPUserDefault change notifications, objectForKey: could return the value from prior to the change.
This commit is contained in:
@@ -184,9 +184,8 @@ var StandardUserDefaults;
|
||||
}
|
||||
|
||||
[domain setObject:anObject forKey:aKey];
|
||||
[self domainDidChange:aDomain];
|
||||
|
||||
_searchListNeedsReload = YES;
|
||||
[self domainDidChange:aDomain];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -211,9 +210,8 @@ var StandardUserDefaults;
|
||||
return;
|
||||
|
||||
[domain removeObjectForKey:aKey];
|
||||
[self domainDidChange:aDomain];
|
||||
|
||||
_searchListNeedsReload = YES;
|
||||
[self domainDidChange:aDomain];
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@@ -18,6 +18,7 @@ CPUserDefaultsTestKey2 = @"KEY2";
|
||||
@implementation CPUserDefaultsTest : OJTestCase
|
||||
{
|
||||
CPUserDefaults target;
|
||||
id lastObservedCPUserDefaultsTestKey1;
|
||||
}
|
||||
|
||||
- (void)setUp
|
||||
@@ -40,7 +41,6 @@ CPUserDefaultsTestKey2 = @"KEY2";
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (void)testSetObjectForKey
|
||||
{
|
||||
[target setObject:[CPArray arrayWithObjects:@"cell1", @"cell2"] forKey:CPUserDefaultsTestKey1];
|
||||
@@ -133,7 +133,23 @@ CPUserDefaultsTestKey2 = @"KEY2";
|
||||
|
||||
[target removeObjectForKey:CPUserDefaultsTestKey1];
|
||||
[self assert:[target dataForKey:CPUserDefaultsTestKey1] equals:nil];
|
||||
}
|
||||
|
||||
- (void)testNotification
|
||||
{
|
||||
[target setDouble:5.0 forKey:CPUserDefaultsTestKey1];
|
||||
|
||||
[[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefaultsDidChange:) name:CPUserDefaultsDidChangeNotification object:target];
|
||||
|
||||
// Prod the class to resolve any outstanding _searchListNeedsReload's.
|
||||
[self assert:5.0 equals:[target objectForKey:CPUserDefaultsTestKey1] message:"normal read"];
|
||||
[target setDouble:10.0 forKey:CPUserDefaultsTestKey1];
|
||||
[self assert:[target objectForKey:CPUserDefaultsTestKey1] equals:lastObservedCPUserDefaultsTestKey1 message:"should observe new value"];
|
||||
}
|
||||
|
||||
- (void)userDefaultsDidChange:(CPNotification)aNotification
|
||||
{
|
||||
lastObservedCPUserDefaultsTestKey1 = [target objectForKey:CPUserDefaultsTestKey1];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user