【发布时间】:2011-09-22 20:58:37
【问题描述】:
我有一个表格视图,在最后一行有一个字符串。
@interface MyTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
NSString *loadingMessage;
}
@property (retain) NSString *loadingMessage;
@synthesize loadingMessage;
- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//some stuff...
cell.textLabel.text = loadingMessage;
}
然后当某些事件发生时,我将更改加载消息:
-(void)requestFailed:(NSError*)error {
self.loadingMessage = [NSString stringWithFormat:@"Failed with error: %@", error];
}
根据仪器,我在这里泄漏了 loadingMessage 字符串......但我不明白为什么。我认为 stringWithFormat 的计数是 +0,而 setter 是 +1。当我解除分配时,我也会释放字符串。我做错了什么?
【问题讨论】:
-
据我所知,没有任何问题。你是在一个独立的测试中做这个测试,还是在一个其他 NSString 可能有问题的程序中做这个测试?
-
不是独立测试,但这是仪器报告泄漏的唯一 ivar...
-
显示使用和设置 loadingMessage 的代码。另外,你是在 dealloc 中释放的吗?
-
我给你看了对吧?我在 cellForRowAtIndexPath 中使用它并在 requestFailed 中设置它。我确实提到我在 dealloc 中发布了它。
标签: iphone nsstring instruments memory-leaks