繁体   English   中英

使用ARC时如何将UIButton保留在内存中?

[英]How do I keep a UIButton in memory while using ARC?

我想做的是为每个创建的UIButton都拥有一个功能,并使用该功能内的一个开关来确定其行为。 我正在按钮上设置标签以使用该开关,但实际上并没有那么远。

for var(int i = 0; i < numResults; i++)
{
   UIButton* button = [[UIButton] alloc] initWithFrame:CGRectMake(0,(i*55)+10,320,50)];
   [buttton setTag:i];
   [button addTarget:self action:@selector(buttonHandler) forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:button];
}

   ...

-(void) buttonHandler:(id)sender
{
    //Handle the button press
}

当我单击任何按钮时,应用程序都会引发错误:

-[WatchViewController buttonHandler]:无法识别的选择器发送到实例0x6845430

我相信这是因为创建了按钮变量,然后由于没有对其的引用,该变量由ARC自动释放,因此调用函数时该变量不再存在。 不幸的是,我不知道如何在内存中保留对每个按钮的引用。

如果我错了(或者我写的任何东西都是不好的做法),请随时告诉我-它会帮助我学习!

您的问题是使用@selector(buttonHandler) 您的意思是@selector(buttonHandler:) 注意末尾多余的冒号。 我喜欢打开“未声明的选择器”(-Wselector)警告来捕获这种错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM