Exec_bad_access with touch events

I keep getting random though often exec_bad_access crashes with touchesBegan and moved
it happens mostly after changing a scene, my game has levels but uses the same class but with different variables and can sometimes make it to level 3 and sometimes only 2

I’m using box2d as well and have had a lot of trouble with >removeChild not doing quite what it should, as I used to have a class which held the body and sprite but it would cause Exec_bad_access when looping through the world list of bodies.
umm another side note
I ported my game from cocos2d which works fine.

I have a reasonable codebase so won’t throw anything up till someone asks for it,

switch (sHelper.m_type)
{
case CCTOUCHBEGAN:
pHandler->getDelegate()>ccTouchesBegan;
break;
case CCTOUCHMOVED:
pHandler
>getDelegate()>ccTouchesMoved;
break;
case CCTOUCHENDED:
pHandler
>getDelegate()>ccTouchesEnded;
break;
case CCTOUCHCANCELLED:
pHandler
>getDelegate()->ccTouchesCancelled(pMutableTouches, pEvent);
break;
}

Thank you in advance!

nevermind figured it out, was releasing my mainLayer(of type layer) after adding it to the scene when it was in fact an autorelease object