NSMutableString的这种用法是内存泄漏吗?

时间:2009-04-17 02:14:37

标签: iphone cocoa cocoa-touch objective-c memory-leaks

我目前正在使用一个实例变量,该变量是一个类中的NSMutableString,它是NSURLConnection的委托。该变量负责构建从委托方法返回的数据字符串:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

字符串'foo'的属性设置为retain。它在我的类init方法中以这种方式非常直接地分配:

dataString = [[NSMutableString alloc] init];

它在类dealloc方法中发布。

在连接:didReceiveData:中,我使用var这样:

    NSString *tmpString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    [dataString appendString:tmpString];
    [tmpString release];

现在这就是事情变得棘手的地方。由于我设置NSURLConnection委托的类是一个单例(它主要处理NSURL *类型的调用),我需要考虑如何重新使用我的对象。因此,在我的connectionDidFinishLoading:类中我有以下内容:

   // cache away data currently in dataString.
[dataString release];
dataString = [[NSMutableString alloc] init];

处理我的dataString的策略会让你的眼睛流血吗?我是否泄漏记忆?我能做些什么呢?

1 个答案:

答案 0 :(得分:0)

您是否会问我们应用程序中{em> use的每个 object内存是否泄漏?

Read the documentation.了解the rules of object ownership,您每次都会得到答案。

如果您怀疑有泄漏,请运行Instruments的ObjectAlloc探针。 You've done this once already,显然你知道如何。还有the leaks command