我NSOperation
在后台线程上运行,我想runSpeed
在主线程上收到内存警告时更改它的一个属性,一个名为 的浮点数。但是,下次后台线程达到 runSpeed 时,它似乎与之前的值相同。
NSOperation
当我在主线程上更改它时,如何确保它在线程中更改?
编辑:
最初没有发布代码,因为我认为我想错了。这是我的代码:
应用委托
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSLog(@"memory warning");
if (dataUpdateIsActive) {
NSLog(@"data update is active");
dataUpdate.runSpeed = 10;
[NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(resetRunSpeed)
userInfo:nil
repeats:NO];
}
}
然后在一个方法中:
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
dataUpdate = [[JDataUpdate alloc] init];
[dataUpdate setOldPSC:[oldContext persistentStoreCoordinator]];
[dataUpdate setCurrentPSC:[newContext persistentStoreCoordinator]];
[dataUpdate setRunSpeed:0.5];
[dataUpdate setEntriesToCreate:250];
[dataUpdate setSaveFrequency:10];
dataUpdateIsActive = YES;
[operationQueue addOperation:dataUpdate];
这两个NSLogs
都会被触发。
NSOperation
- (void)main
{
for (NSInteger index = 0; index < [self entriesToCreate]; ++index) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:[self runSpeed]]];
}
}