2011-03-25 54 views
1
NSString* strSubject = [[NSString alloc] initWithData: temp encoding: 
NSISO2022JPStringEncoding]; 

我收到了一条内存消息“上面一行分配的对象的潜在泄漏”。 有没有其他的方法来写相同的。NSString在目标c中的内存警告

+0

你在哪里释放strSubject? – 2011-03-25 05:11:16

回答

2

除非您释放它或将其放入autorelease池中,否则您将获得该类消息。

这是可以做到的:

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

立即去做。您还可以使用:

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

将在未来某个时候发布。

+0

paxdiablo意味着您需要执行'[strSubject发布]'或'[strSubject autorelease]':-) – 2011-03-25 04:49:05

+0

谢谢@smalduck,我将其纳入答案。 – paxdiablo 2011-03-25 04:54:52

0

以后需要做[strSubject release][strSubject autorelease]以后或立即。我会用这个:

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

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

事实上任何[NSString stringWithBlah:xx]方法或多或少相当于[[[NSString alloc] initWithBlah:xx] autorelease]