相关疑难解决方法(0)

为什么我的completionBlock永远不会在NSOperation中被调用?

我已经放弃了NSOperation并设置了我的completionBlock,但即使操作完成,它似乎永远不会进入.这是我的代码:

目录控制器类设置NSOperation:

- (void)setupOperation {
...

    ImportWordOperation *importWordOperation = [[ImportWordOperation alloc] initWithCatalog:words];
    [importWordOperation setMainObjectContext:[app managedObjectContext]];
    [importWordOperation setCompletionBlock:^{
        [(ViewController *)[[app window] rootViewController] fetchResults];
    }];
    [[NSOperationQueue mainQueue] addOperation:importWordOperation];
    [importWordOperation release];
...
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在设置完成块以在主线程上执行某个方法,在其他控制器中执行.

然后,在main我的子类NSOperation类中:ImportWordOperation.m,我启动后台操作.我甚至覆盖了isFinishediVar,以便触发完成方法:

- (void)setFinished:(BOOL)_finished {
    finished = _finished;
}

- (BOOL)isFinished {
    return (self.isCancelled ? YES: finished);
}

- (void)addWords:(NSDictionary *)userInfo {
    NSError *error = nil;

    AppDelegate *app = [AppDelegate sharedInstance];

    NSManagedObjectContext *localMOC = [userInfo valueForKey:@"localMOC"];
    NSEntityDescription *ent = [NSEntityDescription entityForName:@"Word" inManagedObjectContext:localMOC];
    for (NSDictionary …
Run Code Online (Sandbox Code Playgroud)

iphone nsoperation ios6

11
推荐指数
1
解决办法
4588
查看次数

标签 统计

ios6 ×1

iphone ×1

nsoperation ×1