我正在开发一个应用程序,其中我正在做很多addSubview和removeFromSuperview,但由于内存管理不足,应用程序崩溃了。我想知道addSubview是否会增加一个视图的引用计数? removeFromSuperView会将引用计数减一吗?
答案 0 :(得分:0)
是的,他们这样做。通常,无论何时将对象添加到集合(包括对象的子视图数组),它都会增加其保留计数。
答案 1 :(得分:0)
是的,如果您创建这样的视图:
UIView *myView = [[UIView alloc] init];
保留计数为1,您是所有者。
如果您将此视图添加到另一个视图,则第二个视图将是其所有者,并且会增加计数,因此您需要发布:
[mySecondView addSubView:myView];
[myView release];
现在,如果要删除该视图,请执行以下操作:
[myView removeFromSuperView];
您的视图将被完全释放,因为removeFromSuperView会减少计数。
所以,总结一下:
答案 2 :(得分:0)
确切地说是... addSubView会将视图的引用计数增加一,而removeFromSuperView也会将它递减一个..如果您在内存管理中遇到一些问题,请尝试跟踪您的视图的引用计数可能不是被释放。
答案 3 :(得分:0)
是的,你是对的 addSubView 增加了要添加的视图的引用计数, removeFromSuperView 减少了一个。
答案 4 :(得分:0)
调用addSubview
会增加引用次数,因此您需要在调用addSubview
请参阅Apple UIView reference document其中的addSubview,其中说明“此视图由接收方保留”。