接下来将在RAM中分配内存...?
NSArray *obj = [[NSArray arrayWithObjects:@"Hai",@"iHow",
nil] retain];发布于 2009-10-21 15:42:24
是。它将创建一个NSArray对象并将其存储在堆中。arrayWithObject方法返回一个自动释放的对象,但是额外的retain语句确保引用计数至少为1,并且在显式释放它之前不会释放内存。
它可能值得补充,它不是“保留”语句来分配内存,内存是由arrayWithObject方法分配的。retain语句简单地递增该对象的引用计数。
发布于 2009-10-21 17:36:43
为了补充Tom的正确答案,下面这行代码:
[NSArray arrayWithObjects: ...]等同于:
[[[NSArray alloc] initWithObjects:...] autorelease]因此,您可以这样做,而不是将retain附加到第一行:
[[NSArray alloc] initWithObjects:...]在任何情况下,内存都是在alloc中分配的,无论该方法出现在您的代码中还是隐式的(就像在自动释放类方法便利调用中一样)。
https://stackoverflow.com/questions/1599298
复制相似问题