0

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]]];
    }
}
4

0 回答 0