Do you always destroy a gun after firing one clip?
Just add another condition to your "On touch end" event:
System -> Compare two variables -> spBullet.Count=0
You need to make sure that all bullets get destroyed eventually. You can add "Destroy outside of layout" behavior.