如何解决此内存泄漏问题……我什至如图所示在最后将其释放,但仍然存在。如果陈述几乎是10-15则像给定代码一样使用它...但是最后我释放了它。



LoginResponse *response = [[LoginResponse alloc] initWithMessageString: messageString];


ServerMessage *ackMessage = [[ServerMessage alloc] initWithMessageToAck:response];
[[NSNotificationCenter defaultCenter] postNotificationName:@"SendMessageToServer" object:ackMessage];

[[NSNotificationCenter defaultCenter] postNotificationName:@"LoginResponseReceived" object:response];

最佳答案

您没有释放messageString。您正在执行的操作是这样的:

// there's a messageString
if(...){
     NSString* messageString= [[NSString alloc] init ... ]
                                   // you're declaring new messageString,
                                   // not related to the outer messageString
     ...
     // and you didn't release the inner messageString.
     // The pointer messageString just goes away.
}
[messageString release]; // you're releasing outer messageString, not inner messageString.


从XCode执行“分析”。 (它在“ build”菜单项的下面。)我认为这应该可以解决忘记释放内部messageString的问题。运行仪器之前,请使用“分析”。

09-28 10:02