自定义子视图在分析时会导致内存泄漏

时间:2011-10-09 00:20:36

标签: objective-c xcode

我正在尝试为应用创建自己的自定义子视图。该视图是UIView的子类,包含几个UIButtons和一个UITextField。代码实际上构建和运行没有问题,但是当我对代码进行“分析”时,它给了我4个潜在的内存泄漏。我将把这个子视图包含在一个更大的项目中,所以我想在将这些子视图添加到更大的项目之前将其删除。以下是其中一个泄漏发生的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.nameView.delegate = self;
    [self.nameView.newName resignFirstResponder];   // this is line 60
    [self.nameView setHidden:YES];
    [self.nameView setNeedsDisplay];
}

它给我的错误是:“在第60行创建的对象的潜在泄漏” 然后,如果我点击该错误,则说:“在第60行分配的对象稍后在此执行路径中未被引用,并且保留计数为+1,对象泄露” 在此先感谢您提供给我的任何帮助。 吉尔

CocoaFu,感谢您的帮助 - 我是该网站的新手,我将尝试给出正确的反馈。至于这个问题,我应该包含更多的信息。 nameView是我的自定义视图的名称 newName是视图中UITextField的名称。 我会在这里尝试一些建议,让你知道它们是否有效。再次感谢。这是一个很棒的网站!

1 个答案:

答案 0 :(得分:1)

[self.nameView.newName resignFirstResponder];

与:

相同
[[[self nameView] newName] resignFirstResponder];

这意味着newName是一个方法,以newcopy开头的方法应该返回一个保留的实例。我怀疑newName没有这样做,但规则说它确实如此。解决方案是遵循Objective-C命名规则:更改名称newName

不,你没有说,但也许newName是一个属性。好吧,@synthesize创建了访问方法newNamesetNetName