Arc:为多个按钮设置对nil的引用

Cus*_*ons 1 iphone xcode ios ios5

在ViewController中显示诸如按钮之类的项目时,我在头文件中声明它:

@property (nonatomic, strong) UIButton *startButton;
Run Code Online (Sandbox Code Playgroud)

在实现文件中合成它:

@synthesize startButton;
Run Code Online (Sandbox Code Playgroud)

在实现文件中启动它:

startButton = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
Run Code Online (Sandbox Code Playgroud)

并在viewDidUnload中将引用设置为nil:

[self setStartButton:nil];
Run Code Online (Sandbox Code Playgroud)

但是,如果我在循环中动态创建了60个列出的项目(在UIScrollView中),在viewDidLoad中(从Core Data提供),该怎么办?(不使用TableView,因为项目非常复杂和交互.)

我应该先在任何地方申报这些物品吗?我应该把它们设置为零吗?(或者我应该保持手指交叉并向Arc祈祷吗?)

一些指导意见将不胜感激.谢谢.

Cal*_*leb 5

您的视图控制器是否具有指向这60个项目中的每一个的属性或实例变量?

是的:然后将这些ivars或属性设置为nil -viewDidUnload.

不:那就没什么好担心的了.

ARC会改变管理内存的方式,但它不会改变基本原则,即每个对象都应该处理自己对其他对象的引用,但不要担心其他任何对象.

在这种情况下,包含所有这些项的视图将具有对项的强引用(通过它的子视图数组).当视图控制器释放其视图时,该视图将被释放并在该过程中释放其所有子视图.因此所有这些项目都将得到妥善处理.如果您确实对这些项中的任何项都有强引用,那么这些引用将阻止引用的对象被释放 - 将引用设置为nil将避免这种情况.