IPhone Objective C内存分配

NYT*_*Tom 3 memory iphone memory-management objective-c alloc

我理解当使用Alloc时,新的或复制你拥有该对象并需要释放该对象.我明白,如果我保留一个我需要释放它的对象.

但是,如果我在方法结束时有以下语句:

return [[UIImage alloc] initWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)

我拥有该UIImage对象因为我分配了内存空间,但我不再引用它,因为它被返回给调用者.在我的dealloc()方法中,我无法释放它,因为我没有参考.

所以我的问题是,这是正确的:

return [[[UIImage alloc] initWithContentsOfFile:path] autorelease];
Run Code Online (Sandbox Code Playgroud)

我相信在这种情况下,调用者可以保留返回的对象,如果他们想要获得所有权并最终需要释放自己.

谢谢你的帮助.

Ale*_*der 5

你的假设是正确的.当您返回一个对象时,您应该将其作为自动释放对象传递.

当您需要发送延迟发布消息时,通常在从方法返回对象时使用自动释放...