在ARC下,卸载viewcontroller时需要为所有强成员设置nil吗?这是必须的吗?

jes*_*ang 5 memory ios automatic-ref-counting

假设我有一个这样的视图控制器:

@interface ControllerA : viewcontroller{
    NSString * __strong a;
}

@end
Run Code Online (Sandbox Code Playgroud)

并在viewDidLoad功能我设置

a = [[NSSString alloc] init];
Run Code Online (Sandbox Code Playgroud)

在另一个ControllerB中,

{
    ControllerA * controllerA = [[ControllerA alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

控制器的成员会被释放吗?

Cal*_*leb 5

是的,指定的字符串a将在释放时controllerA释放.您无需自行设置nil.

转换到ARC发行说明目前是查找有关使用ARC的更多信息的地方.它的一个重点是,-dealloc如果您的类需要执行释放实例变量时释放实例变量以外的任何操作,您可能仍需要自定义.