I have several UIView subclasses (buttons, labels, etc.) that follow the following setup pattern. My question is, why are messages still able to be sent to the UILabel after release?
myLabel = [[UILabel alloc] initWithFrame:someFrame];
[someUIView addSubview:myLabel];
[myLabel release];
myLabel.textAlignment = UITextAlignmentCenter;
// other property changes to myLabel
They are “owned” by a new UIView, I suppose, but I don’t understand why release doesn’t destroy the original object and thereby all messages to it. I’m not making property changes through someUIView‘s subViews. I’m not complaining. I’m just trying to understand why.
EDIT: I should add that these are instance variables, if that makes a difference.
You can still send messages to the label because the label hasn’t been released yet.
-addSubview:retains the objects passed in, so the object remains in memory since the view is still holding a reference and you didn’t nil themyLabelpointer.