如何在使用ARC的UIViewController的addSubview之后保留视图

时间:2012-02-04 22:01:33

标签: memory-management uiview

如何处理使用ARC并添加UIViewController视图的情况?

MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[someView addSubview:vc.view]; //this retain vc.view

因为addSubview保留onlu视图,而不是控制器,所以控制器被释放。 ARC之前有一种方法可以保留控制器,只要neede,但如何防止ARC释放View Controller?

3 个答案:

答案 0 :(得分:2)

我通过将vc声明为具有默认强属性的属性来解决类似情况。

答案 1 :(得分:0)

#define AntiARCRetain(...) void *retainedThing = (bridge_retained void *)__VA_ARGS; retainedThing = retainedThing

然后调用AntiARCRetain(控制器);

答案 2 :(得分:-1)

为什么你需要一个新的ViewController? 您应该只将视图添加为子视图并使用ViewController处理所有内容" someView"