0

バックグラウンド スレッドで を実行していて、メイン スレッドでメモリ警告が表示されたときにNSOperation、そのプロパティ ( という名前の float) を変更したいと考えています。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トリガーされます。

NSオペレーション

- (void)main
{
    for (NSInteger index = 0; index < [self entriesToCreate]; ++index) {
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:[self runSpeed]]];
    }
}
4

0 に答える 0