【发布时间】:2010-11-28 20:24:45
【问题描述】:
(或什至只有一个班级和一个代表)
假设我有一个名为 DataGetter 的类,它从 Web 下载文件。它有一个委托方法,当文件被下载时触发:
- (void) dataGetterFinished:(DataGetter *)dataGetter;
所以我可以在我的代码中设置几个要下载的文件,如下所示:
// in AViewController.m
DataGetter *blueFile = [[DataGetter alloc] init];
blueFile.delegate = self;
[blueFile getData:@"http://example.com/blue-file"];
DataGetter *redFile = [[DataGetter alloc] init];
redFile.delegate = self;
[redFile getData:@"http://example.com/red-file"];
使用 clang 静态分析器,上面的每个 alloc 行都会出现“在线分配的对象的潜在泄漏......”错误。那么我将如何释放该对象。它必须闲逛,因为它有一个代表。那么作为dataGetterFinished方法的最后一行放出来可以吗,像这样
- (void) dataGetterFinished:(DataGetter *)dataGetter
{
// code
[dateGetter release];
}
...或者我应该以某种方式使用自动释放?
【问题讨论】:
标签: iphone objective-c ios delegates