我UIScrollView
在使用 ARC 的类的实现文件中声明为 iVar:
@interface RecipeBrowserViewController ()
{
UIScrollView *tempScrollView;
}
这是必要的,因为在执行期间我有时需要UIScrollView
将UIScrollView
if (someTest)
{
tempScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
tempScrollView.delegate = self;
[self.view addSubview: tempScrollView];
}
else
{
[tempScrollView removeFromSuperview];
}
我的期望是tempScrollView
一旦从 中删除 就会被释放superview
,但事实并非如此。大概是因为 iVar 仍在引用它?
tempScrollView = nil
从清除它后添加它superview
,但我不确定正确的方法是什么。我应该改为声明weak
iVar 吗?到目前为止,我只看到weak
了针对代表或其他双向 iVar 的建议,否则会导致强大的参考周期。这是我应该使用它的另一个地方吗?