Ron*_*Ron 3 memory-management objective-c automatic-ref-counting retain-cycle
在下面的代码中,我是否正确理解了保留周期问题并且是否会有保留周期?
- (NSError *)importRoute:(NSDictionary *)route {
[self.importContext performBlockAndWait:^{
[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:self.importContext];
//do I get a retain cycle here?
}];
...
}
- (NSManagedObjectContext *)importContext {
if (!_importContext) {
id appDelegate = [[UIApplication sharedApplication] delegate];
_importContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
_importContext.parentContext = [appDelegate managedObjectContext];
}
return _importContext;
}
Run Code Online (Sandbox Code Playgroud)
rob*_*off 11
有一个保留周期,但它是暂时的.这是保留周期:
self 保留 importContextimportContext 保留块self块一旦完成执行,就importContext释放它.此时,块的保留计数变为零,并且它被解除分配.当它被解除分配时,它会释放self.
通常,涉及块的保留周期仅在块无限期保留时才会出现问题,例如因为您将其存储在属性,实例变量或容器中.如果您只是将块传递给将在不久的将来执行块一次的函数,那么您通常不必担心保留周期.
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |