Block *block = [CCSprite spriteWithFile:file];
doesnt xcode give you a warning at this line?
you are creating a CCSprite and storing it in Block-typed variable. Block is a subclass of CCSprite so its *more* specific than CCSprite so you cant assign in that direction. What if you access block.someBlockProperty except that it doesnt exist bc its really a CCSprite?
and if you tried:
Block *block = [Block spriteWithFile:file];
you would get caught up in an infinite loop since every init of a Block creates a new Block which calls init which creates a new Block which...
So Im guessing you originally had that line, froze/crashed, changed it to what you have now, and got an xcode warning which youve ignored.
Why does Block create a new sprite which it adds to itself? Do you really need to have a Sprite with more Sprite(s) as children?
I would *never* let a Sprite have children. Nodes and Layers etc... should have children. But Sprites should be leaves. (leafs?) Nodes and Layers should be branches. I wish cocos would of enforced this in code but its too late now.