self.someProperty = [[SomeClass alloc] init]; [self.someProperty release];
This is that frustrating kind of wrong where it doesn’t crash or leak, so it can sometimes make for a hard sell.
If the object has a setter, use the setter, except in init and dealloc. It hinders your flexibility to change memory semantics and it violates owning naming conventions, you’re getting back an autoreleased object, not a +1 object. It’s probably going to work like 99% of the time, but it’s not ok.
Don’t do it.