Managing the lifetime of short-lived sub objects when ARC is used
===

I have a controlling parent class that needs to perform several actions, these actions typically have a very short lifespan. I'm using a Factory class to create these objects and have some questions about how to best manage their demise and if more than one can safely co-exist. Here some example pseudo code:

    @interface parent
    @property (strong, nonatomic) ChildAbstract*  action;
    - (ChildAbstract*) makeChildOfType:(Type)type;
    - (void) performActionA;
    - (void) performActionB;
    - (void) performActionC;
    
    ...
    - (void) performActionA;
    {
        self.action = [self makeChildOfType:A];
        [self.action doYourThing];
    }
    
    - (void) performActionB;
    {
        self.action = [self makeChileOfType:B];
        [self.action doYourThing];
    }

I have quite a lot of different types of actions and each child action class knows what it has to do and when its finished doing it.
I could create separate properties for each different type of concrete action instead of having one abstract property, and have each child object inform the parent when its finished via a delegate, however that's starting to get a little messy especially when the fact that multiple actions of the same type could potentially be active at once (which would require arrays of pointers to objects of each type). Therefore I'm wondering if/how the child objects can manage themselves, specifically their own destruction.


If each object looked something like this:

    @implementation ChildObjectA
    
    -(void) doYourThing
    {
       [self retain];
       do something
    }
    
    - (void) OnCompletion
    {
        [self release];
    }

 

Then is this safe to do - could the parent class create multiple objects of the same type and they all live for as long as each is needed and effectively are deleting themselves when done?

There is presumably no need for the action property of the parent class, but if it was there  I'd like to confirm there's no problems with memory management that arise? - 
