我在后台线程上运行NSOperation
,我想在主线程上获取内存警告时更改它的属性,一个名为runSpeed
的浮点数。下一次后台线程遇到runSpeed时,它看起来与之前的值相同。
当我在主线程上更改它时,如何确保NSOperation
线程中的更改?
编辑:
最初没有发布代码,因为我以为我认为它错了。这是我的代码:
的AppDelegate
-(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]]];
}
}