objective-c - 为什么在分配一个 View 并将其添加到另一个 View 后,保留计数变为 3?

标签 objective-c ios memory-management

里面didSelectRowAtIndexPath我的 UITableViewController 的功能,我放置一个UIActivityIndicatorView超过选定的UITableViewCell因为点击此单元格可能会发出缓慢的服务器请求。我打印出 UIActivityIndicatorView 的保留计数并注意到它是 3,而我预计它是 2。

// @property (nonatomic, retain) UIActivityIndicatorView *spinner;
foo.spinner = [[UIActivityIndicatorView alloc] 
    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge
];

UITableViewCell *cell = [self.tableView cellForRowAtIndex:indexPath];
[cell addSubView:foo.spinner];

NSLog("retain count of spinner = %d", [foo.spinner retainCount]);

第一次保留应该发生在 foo->setSpinner .第二次保留应该发生在 tableView将微调器添加为 subview 。第三个保留在哪里?您将如何避免这种内存泄漏?

最佳答案

您没有理由关心保留计数是多少。您应该关心的只是您的保留和释放是否平衡。

关于objective-c - 为什么在分配一个 View 并将其添加到另一个 View 后,保留计数变为 3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7219659/

相关文章:

iPhoneSDK 中的 HTML 到 PDF 转换

iOS 翻译应用 url schemes

ios - 将 .jpg 和 .mtl 文件应用于 SceneKit 中的 .obj 文件

ios - 如何在 iOS 中使用两个不同的表

objective-c - 创建缩略图库的最佳方式

c - 需要帮助查找错误,如果字符串输入由所有相同字符组成,则输出字符已损坏

python - 为什么当 Python 退出时没有释放所有内存?

ios - 如何在表格 View 单元格中使用开关?

ios - 将事件指示器置于顶部

c - `realloc` 实际上是如何在后台工作的?