2011-03-25 49 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]