-1
我被要求修复这个不工作的代码,这是一个常见的后台任务。NSManagedObjectContext在performBlock中分配时为零
__weak NSManagedObjectContext *weakCtx=[CDC privateManagedObjectContext]; // convenient class+macro for obtaining a private context queue
__weak id weakSelf = self;
[weakCtx performBlock:^{
__strong id strongSelf = weakSelf;
__strong NSManagedObjectContext *ctx = weakCtx; // <-- nil
// more code following
];
问题是在后面的代码由ctx
是零所致。但是,如果我在块中放置了一个断点,我可以看到虽然weakCtx仍然有效,但ctx会得到一个零值,这会导致块失败。
而在相反的情况下,weakSelf被正确分配,并且通过代码的其余部分工作。
我错过了什么?
同样的老downvoter ...来,downvote,并去... – Leonardo