I had a look at instruments and I saw that the alloc increased the retain count by 1. So far everything clear. But the assignment of the class to my property also increased the retain count to 2.
self.myProperty = [[MyClass alloc] init]
Vs.
MyClass *myCreatedVariable = [[MyClass alloc] init];
self.myProperty = myCreatedVariable
To decrease the retain count to zero I released myCreatedVariable right after my calls. The myProperty instance variable is released in the dealloc method. Am I right that a property only is released in the dealloc method?
Now to my question:
Is the allocation and the assignment to a property always creating a retain count of 2? So don’t use
self.myProperty = [[MyClass alloc] init]
because the retain count is never getting zero? Or is this only the case if I’m allocating a class?
Cheers
Your property is most probably declared as retaining or copying:
or
This calls your setter that does what its attributes say: retain! Copy will also retain.
Although it worked here, you shouldn’t try to get useful information out of the retainCount property.
I cannot recommend the Memory Management Programming Guide highly enough, well worth a first, second and third read. 🙂