在我的一个视图控制器中,我已经定义了一个私有变量,如下所示,
@implementation CNLibraryViewController {
CNMaterialsViewController *_materials;
}
每次重新加载视图时,我都会重新分配内存并初始化此变量,如下所示
_materials = [[CNMaterialsViewController alloc] init];
_materials.gridViewActionDelegate = self;
_materials.itemRetrieving = self.dataModel.itemRetrieval;
[_materials setSortDescriptors:_sortDescriptors];
[_materials loadItems:[results allObjects]];
在CNMaterialsViewController.m
我定义了一些私有变量,如下所示
@implementation CNMaterialsViewController {
CNItemViewController *_itemViewController;
id<CNItemViewControllerViewSetupDelegate> _itemDescriptionTileSetup;
}
所以问题是,这两个变量的保留计数在每次CNMaterialsViewController
初始化时逐个增加。
无法找到任何理由。任何人都可以帮我找出问题。
作为解决方案,我在初始化nil
之前将这些变量分配给CNMaterialsViewController
。但我觉得这不是一个好的解决方案。
所以,请帮助我。
答案 0 :(得分:0)
你必须给编译器一个关于你希望ARC如何处理ivars的提示。如果你没有将变量限定为__weak
,编译器会认为你需要一个强引用,并且只要它的父代仍然存在就会保留它。
添加@mariusLAN所说的内容,您不再需要声明ivars了 - 您只需声明一个属性并在那里声明您的意图。即。
@interface CNLibraryViewController
@property (weak, nonatomic) CNMaterialsViewController *_materials;
@end