On Fri, Jun 6, 2008 at 9:41 PM, Jon Keon <[EMAIL PROTECTED]> wrote:

>
> Hi All,
>
> I'm having a problem with creating new instances of classes after other
> instances of them have been released.
>
> I have a class called BaddieManager.
>
> In this class I have a NSMutableArray that holds instances of Baddies.
>
> So I create a new instance, place it my array and when the Baddies life
> expires, I remove it from the array. This then causes the instance to
> dealloc but then the next time I call my populateBaddies function the
> whole program crashes with no error message. Any help would be greatly
> appreciated.
>
> Thanks,
> Jon
>
> //populate the array with baddies
> -(void) populateBaddies {
>
>        while (baddieCount < baddieLimit) {
>
>
>                //Create a new instance of my baddie
>                PBaddie *newBaddie = [[PBaddie alloc] init];
>                //add him to the view
>                [gameView addSubview:newBaddie];
>                //give him a reference of the manager
>                [newBaddie attachManagerRef:self];


What is the above method doing? I hope it is not retaining or releasing the
reference it is keeping in it's dealloc method. That will cause a crash when
next time this obj is accessed after releasing your *baddie object*.
Normally to maintain a weak reference delegate pattern is used, where
delegate is never retained or released.

If you are doing that right, see if you get a crash log/stack trace or any
logs in sys-console.

- Vijay


>
>                //animate him
>                [newBaddie animateBaddie:NULL finished:0];
>                //add him to the array
>                [pBaddieArray addObject:newBaddie];
>                //release the temp variable
>                [newBaddie release];
>                //increment the count
>                baddieCount = [pBaddieArray count];
>
>        }
>
> }
>
> //Removes the Baddie from the array and destructs him
> -(void) removeMe:(PBaddie *) pBad {
>
>        //remove from the game view - we don't want to see it anymore
>        [pBad removeFromSuperview];
>
>        //remove the baddie from the array (Causes the Baddies dealloc
> method to fire)
>        [pBaddieArray removeObject:pBad];
>        //update the count
>        baddieCount = [pBaddieArray count];
>
> }
> _______________________________________________
>
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/vijay.malhan%40gmail.com
>
> This email sent to [EMAIL PROTECTED]
>
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to