不改变NSOperation的属性

时间:2012-09-21 13:20:52

标签: iphone objective-c ios nsoperation nsoperationqueue

我在后台线程上运行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]]];
    }
}

0 个答案:

没有答案