目标c自动释放问题

Mor*_*gan 1 memory-management objective-c

嘿,我有一个快速的自动回复问题.我基本上了解它是如何工作的,但我想知道以下是否会造成内存泄漏.

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

NSString* string = [[[NSString alloc] init] autorelease];
[[string retain] autorelease];

[pool drain];
Run Code Online (Sandbox Code Playgroud)

字符串是否会发送两条释放消息?

bbu*_*bum 6

将您与对象的保留计数的交互想象为纯粹的delta.

如果将其增加1,则需要将该对象减少一个才能释放该对象.

所以 - 是的 - 你把它增加了两倍,并在那段代码中减少了两倍.结果将有两个排水管.