我的问题很简单。我有一个 UITableViewController(好吧,我把它子类化了,但这不是问题),它有一个静态布局,而且它足够大,不能一次全部放在屏幕上。
我viewWithTag
用来检索几个UISwitch
es 的值,但它们就在屏幕外,所以viewWithTag
返回 nil 真是令人发指。
坦率地说,我既不知道也不关心将它们留在内存中的内存开销。留在身边的记忆并不多,而且我的时间很短。
如何防止滚动触发解除分配?
编辑:我确切地知道出了什么问题,如上所述,只是不知道如何解决它(我通常的 google-fu 干了)。但是既然你要求查看代码......
int tag=200
int prefs = 0;
for (int i=0; i != 3; ++i) // There are only 3 preferences
{
prefs = prefs << 1;
UISwitch *swt = (UISwitch *)[self.view viewWithTag:tag + i];
NSLog(@"%@", swt);
if ([swt isOn])
++prefs;
NSLog(@"%d", prefs);
}
上面的代码在 viewDidAppear 中有效(因为开关位于表格的顶部),但一旦我滚动到表格的底部(viewWithTag 返回 null)就不行了。