UIButton导致崩溃

3

这是一个非常简单的问题,但我不知道为什么会发生。在我的头文件中,我声明了一个UIButton *leftButton。在viewDidLoad方法中,我这样做:leftButton=[UIButton buttonWithType:UIButtonTypeRoundedRect];

然后在其他某个方法中,我有:

    leftButton.frame=newFrame;
    leftButton.tag=i;
    [leftButton addTarget:self action:@selector(leftButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:leftButton];

然而,当调用上述方法时,我一直遇到崩溃问题。有时我会收到一条消息,有时它只是无任何消息地崩溃了。我无法复制任何崩溃消息,现在我只是得到一个一般性的崩溃,但它一直从奇怪的问题中崩溃,例如[UIGestureRecognizer setFrame]引起问题或[WebView setFrame]或其他什么东西...出于某种原因,它一直认为leftButton不是UIButton,但这并不是事实。我的整个项目中没有其他名为leftButton的东西。有什么想法吗?

仅当您通过一些NSLog排除了明显的问题时,像这样的情况会让我对Xcode中发生的事情感到非常困惑,我会删除DerivedData。有时即使Xcode表示它会重新编译我的文件,它也不会这样做 - 这值得一试... - 刚刚意识到 - 您很可能没有使用ARC - 因此,按钮丢失可能是一个内存问题。 - user387184
1个回答

7
您的第一个方法返回了一个自动释放的对象,很可能在第二个方法被调用时已经被释放了。可以在第一个方法中保留该按钮或使用保留的属性来持有它,而不是使用实例变量。另外,请记得在dealloc方法中释放它。

我如何在第一个方法中保留它? - Snowman
1
leftButton=[[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 抱歉,我正在手机上输入,无法进行格式化! - jrturton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接