Does the automatic reference counting release an object if I set the pointer to nil or assign the pointer to another object?
For example doing something like that:
//in .h file
@interface CustomView : UIView
{
UIView *currentView;
}
// in .m file:
-(void)createView1
{
currentView = [[UIView alloc] init];
[self addSubview:currentView];
}
-(void)createView2
{
[currentView removeFromSuperview];
// does the former view get released by arc
// or does this leak?
currentView = [[UIView alloc] init];
[self addSubview:currentView];
}
If this code leaks, how would I declare *currentView properly? Or how would I make ARC “release” the currentView? thanks!
With ARC you don’t need to think about
release/retain.Since your variable will have been implicitly defined as
strongthere’s no need to set it toNULL– it’ll be released before it’s assigned to.Personally though I prefer to declare properties: