ios - 为什么retainCount返回2

标签 ios objective-c cocoa-touch memory-management memory-leaks

这个问题在这里已经有了答案:





When to use -retainCount?

(11 个回答)



Why retain count in negative value? [duplicate]

(1 个回答)


9年前关闭。




我有属性(property):

@property(nonatomic, retain) NSMutableArray *myvar;

第一种情况:
    myvar = [[NSMutableArray alloc] init];
    NSLog(@retainCount: %i:", [myvar  retainCount]);

输出:

retainCount: 1



第二种情况:
    self.myvar = [[NSMutableArray alloc] init];
    NSLog(@retainCount: %i:", [self.myvar  retainCount]);

输出:

retainCount: 2



我的问题是:为什么在第二种情况下保留值是 2 ?

最佳答案

唯一有效的答案:永远不要检查、使用、信任retainCount。它不用于调试或直接用于内存管理。

有用:whentouseretaincount.com

但在您的情况下:由于您没有使用 ARC(否则编译将不允许您使用 retainCount),因此您已过度保留。

它保留在这里@property(nonatomic, retain) NSMutableArray *myvar;
在这里:self.myvar = [[NSMutableArray alloc] init];
做:

self.myvar = [[[NSMutableArray alloc] init] autorelease]; //will release once soon

或我最喜欢的,独立于 ARC/MRC 和短
self.myvar = [NSMutableArray array]; // identical to the first example

或更明确
NSMutableArray *var = [[NSMutableArray alloc] init]; 
self.myvar = var; 
[var release];

关于ios - 为什么retainCount返回2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912569/

相关文章:

ios - 如何操作 React Native - Native UI 组件的属性?

ios - AVAudioSession中断和路由变化

ios - AFHTTPRequestOperationManager 的 EXC_BAD_ACCESS

iphone - 解除模态视图 Controller 的奇怪警告

ios - 如何测试依赖于 UIUserInterfaceIdiom (ios) 的代码

ios - 我的 searchBar 过滤器无法正常工作

ios - __NSDictionaryI setObject :forKey: Crash

ios - Http 请求错误 500 仅在 iOS 上

objective-c - 为什么旋转后 UIImageView 的大小会发生变化?

ios - 我有一个使用 XIB 文件创建的自定义 UICollectionViewCell。如何让此单元在点击时将另一个 Controller 插入堆栈