SKSpriteNode-Pools in iOS 8 scheinen einem überlappenden Speicher zugeordnet zu sein

Ich könnte etwas vermissen. Meine derzeitige App im App Store funktioniert jedoch unter iOS 7, aber unter iOS 8 schlägt sie vollständig fehl, da kein vorab zugewiesener Pool von Sprites erstellt wird. Sie scheinen an dieselbe Adresse geschrieben zu sein, es sei denn, die Sprites haben spezifisch unterschiedliche Eigenschaften.

In iOS 7 wird mit dem folgenden Code ein Satz mit 4 eindeutigen Objekten erstellt. In iOS 8 wird mit demselben Code ein Satz mit nur einem Objekt erstellt:

  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);

iOS8 Ergebnis:

2014-09-09 15: 06: 43.065 MSM [383: 27490] aSet Count: 1

Bin ich verrückt geworden? Erstaunlicherweise basiert so ziemlich meine gesamte App auf diesem Code-Konzept, das immer wieder wiederholt wird. Wenn ich das gleiche mache, aber so etwas wieNSObject, dann verschwindet das Problem und es scheint sich um eine neue Änderung von @ zu handelSKSprite. Ich weiß, dass ich es mit ein paar verrückten Sachen umgehen kann, aber es ist ein großer Schmerz, da ich das nicht tun sollte und ich hoffte, eine weitere Versionsübermittlung zu vermeiden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage