我正在尝试查找我的一个 iOS 程序中的内存泄漏。我想我已经把它钉在了与这些类似的几行上:
NSString *s1Upper = [s1 uppercaseString];
s1Upper = [s1Upper stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
(我知道从逻辑的角度来看这两行没有意义,只是说明了我的记忆问题。)
假设 s1 是 @"abc "(以空格结尾)。我理解 NSStrings 的方式,s1Upper 在第一行代码之后指向一个 NSString(@"ABC" 以空格结尾)。在第二行之后,它指向不同的 NSString(@"ABC" 没有空格)。
我的问题:第一个 NSString 什么时候发布?
我的猜测是当当前的 NSAutoreleasePool 耗尽时它会被释放。在这种情况下,我有一个后续问题:我如何影响这一点并控制排水?