【发布时间】:2015-08-22 05:44:02
【问题描述】:
所以我最近才开始更多地研究 iOS 中的内存管理,但我现在完全糊涂了(可能是想多了)...
例如,如果你有一个对象 A(一个 ViewController)强持有对象 B(一个在视图控制器的头文件中声明为 strong 的 NSArray);当您将 NSArray 的属性指定为 strong 时,这是否意味着 ViewController 有一个指向 NSArray 的指针?如果这是真的,我不明白的是你在哪里明确说视图控制器是指向 NSArray 对象的指针?或者“strong”关键字是否暗示视图控制器有一个指向存储 NSArray 的内存位置的指针。例如,我们在这行代码中声明变量 myArray 是指向 NSArray 类型对象的指针:@property(strong, nonatomic) NSArray *myArray;是否为视图控制器在幕后完成了类似的操作?
【问题讨论】:
-
一个对象在其保留计数变为零之前不能被释放。
-
属性的
NSArray *部分表明您有一个指向数组的指针。strong部分仅表示该指针的内存管理。 -
嘿 rmaddy,我刚刚意识到我的错误是 NSArray 永远不会被释放,因为它的保留计数不会下降到 0。
-
当然会 - 当视图控制器被释放时。
-
那么视图控制器是指向 NSArray 对象的指针吗?既然我们在头文件中声明了 NSArray 是强的?
标签: ios objective-c memory-management