目标c中的NSString内存警告

时间:2011-03-25 04:37:04

标签: objective-c

NSString* strSubject = [[NSString alloc] initWithData: temp  encoding:   
NSISO2022JPStringEncoding];

我在上面的一行收到了一条内存消息“分配对象的潜在泄漏”。 是否有其他方法可以写同样的内容。

2 个答案:

答案 0 :(得分:2)

除非您将其发布或将其放入自动释放池中,否则您将获得此类消息。

这可以通过以下方式完成:

NSString* str = [[NSString alloc] initWithData: blah blah blah ... ];
[str release];

立即行动。您也可以使用:

NSString* str = [[NSString alloc] initWithData: blah blah blah ... ];
[str autorelease];

将来在某个时候发布。

答案 1 :(得分:0)

您需要稍后或[strSubject release]稍后或立即执行[strSubject autorelease]。我会用这个:

NSString* strSubject = [[[NSString alloc] initWithData:temp encoding:NSISO2022JPStringEncoding] autorelease];

可悲的是,没有NSString工厂方法stringWithData:,但这是等效的。

事实上,任何[NSString stringWithBlah:xx]方法都或多或少等同于[[[NSString alloc] initWithBlah:xx] autorelease]