sen*_*thu 0 iphone objective-c
以下将在RAM中分配内存....
NSArray*obj = [[NSArray arrayWithObjects:@"Hai",@"iHow",
nil] retain];
是.它将创建一个NSArray对象并将其存储在堆上.arrayWithObject方法返回一个自动释放的对象,但是你的额外retain语句确保引用计数至少为1,并且在你明确释放它之前不会释放内存.
可能值得添加,它不是分配内存的"retain"语句,内存是由arrayWithObject方法分配的.retain语句只是递增该对象的引用计数.
要添加到汤姆的正确答案,行:
[NSArray arrayWithObjects: ...]
Run Code Online (Sandbox Code Playgroud)
相当于:
[[[NSArray alloc] initWithObjects:...] autorelease]
Run Code Online (Sandbox Code Playgroud)
所以retain,你可以这样做,而不是在第一行上添加:
[[NSArray alloc] initWithObjects:...]
Run Code Online (Sandbox Code Playgroud)
在任何情况下,都会分配内存alloc,无论该方法是出现在您的代码中还是隐式的(因为它是在自动释放类方法的方便调用中,如第一个).
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |