释放UIView对象后不调用touchesBegan

时间:2012-02-13 21:21:35

标签: objective-c uiview touchesbegan

我正在使用touchesBegan方法实现UIView。

当我在添加子视图集合后创建此UIView而不发布时,一切正常。

但是,当我是一个好公民并且我在添加子视图后释放该对象时,触摸并不会被调用。

这是我的代码:

插入UIViewController。 OTTestResult是UIView的控制器:

-(void)validateWasPushed:(id)sender
{
    float nota = [testQuestions getTestResults];
    int ok = [testQuestions getOkNumber];
    int fail = [testQuestions getFailNumber];

    OTTestResult *result = [[OTTestResult alloc] init];

    [self.view addSubview:result.view];

    [result loadWithNumber:nota testName:[testQuestions testName] okResponses:ok failResponses:fail];


    [result release];

}

并在OTTestResult对象中触及实现实现:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view removeFromSuperview];
}

任何人都知道我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

  

但是,当我是一个好公民并且我在添加子视图后释放该对象时,触摸并不会被调用。

您没有将result添加到subviews。您添加了result.view。然后,您释放了result,其他人没有持有,并且已取消分配。如果你需要它,你需要在ivar中保持子视图控制器。