Question: My base class has properties that are used by a subclass. where should Release be called? In the original base class or the class that inherits it?

Answer: 
If the properties are only used by the subclass, they should be defined in the subclass (not the parent class) and the subclass should release them within it's -(void)dealloc function. You'd have something like this:

```
- (void)dealloc
{
   [username release];
   [password release];
   [super dealloc];
}

```

Note that we don't call dealloc on the properties! We just call "release" which signifies that we no longer will be using them and the system can clean them up (providing nobody else is using them).
I'm pretty new to Objective-C, so I'm also curious what the best answer is here. I would think that you should set the property to `nil` in the parent class `-dealloc`, where the property is synthesized. If you're retaining it in the subclass for some reason, you should also release it in the subclass, but setting the property to `nil` in the superclass shouldn't have any negative side effects.