我可能会遗漏一些东西.但我在appstore上的当前应用程序适用于iOS 7,但在iOS 8中完全失败,因为它不会创建预分配的精灵池.除非精灵具有特定的不同属性,否则它们似乎写入相同的地址.
在iOS 7中,以下代码生成一个包含4个唯一对象的集合.在iOS 8中,相同的代码生成一个只有一个对象的集合:
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);
Run Code Online (Sandbox Code Playgroud)
iOS8结果:
2014-09-09 15:06:43.065男男性接触者[383:27490] aSet数:1
我疯了吗?令人惊讶的是,几乎我的整个应用程序都基于这个代码概念一遍又一遍地重复.如果我做同样的事情,但使用类似的东西NSObject,那么问题就会消失,所以它似乎是一个新的变化SKSprite.我知道我可以用一些疯狂的东西解决它,但是是一个巨大的痛苦,因为我不应该这样做,我希望避免另一个版本提交.