我正在尝试为应用创建自己的自定义子视图。该视图是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的名称。 我会在这里尝试一些建议,让你知道它们是否有效。再次感谢。这是一个很棒的网站!
答案 0 :(得分:1)
[self.nameView.newName resignFirstResponder];
与:
相同[[[self nameView] newName] resignFirstResponder];
这意味着newName是一个方法,以new
或copy
开头的方法应该返回一个保留的实例。我怀疑newName没有这样做,但规则说它确实如此。解决方案是遵循Objective-C命名规则:更改名称newName
。
不,你没有说,但也许newName是一个属性。好吧,@synthesize创建了访问方法newName
和setNetName
。