Os pools SKSpriteNode no iOS 8 parecem estar alocados à sobreposição de memória
Eu posso estar perdendo alguma coisa. Mas meu aplicativo atual na appstore funciona no iOS 7, mas no iOS 8 falha completamente porque não cria um pool de sprites pré-alocado. Eles parecem estar gravados no mesmo endereço, a menos que os sprites tenham propriedades especificamente diferentes.
No iOS 7, o código a seguir produz um conjunto com 4 objetos exclusivos. No iOS 8, o mesmo código produz um conjunto com apenas 1 objeto:
NSMutableSet *aSet = [NSMutableSet set];
SKColor *sameColor = [SKColor redColor];
CGSize sameSize = CGSizeMake(10, 10);
for (int i = 0; i < 4; i++) {
//allocate a brand new sprite
SKSpriteNode *thisSprite1 = [[SKSpriteNode alloc] initWithColor:sameColor size:sameSize];
[aSet addObject:thisSprite1];
}
NSLog(@"aSet Count: %i", aSet.count);
Resultado iOS8:
2014-09-09 15: 06: 43.065 MSM [383: 27490] aContagem de conjunto: 1
Eu estou ficando louco? Surpreendentemente, praticamente todo o meu aplicativo é baseado nesse conceito de código repetido várias vezes. Se eu fizer a mesma coisa, mas usar algo comoNSObject
, o problema desaparece e, portanto, parece haver uma nova alteração noSKSprite
. Eu sei que posso contornar isso com algumas coisas loucas, mas é uma dor enorme, já que eu não deveria fazer isso, e esperava evitar o envio de outra versão.