Я загружаю текстуры в SpriteKit для использования в анимации, используя следующий код:
NSMutableArray *animFrames = [NSMutableArray array];
SKTextureAtlas *animTextureAtlas = [SKTextureAtlas atlasNamed: @"bearAnimation"];
for (int i = 1; i < animTextureAtlas.textureNames.count / 3; i++) {
NSString *texture = [NSString stringWithFormat:@"image%04d", i];
[animFrames addObject:[animTextureAtlas textureNamed:texture]];
}
// This is a strong property of an NSArray where I store frames of animation
self.bearAnimationFrames = animFrames;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[SKTexture preloadTextures:self.bearAnimationFrames withCompletionHandler:^{}];
});
Моя проблема заключается в том, что использование приведенного выше кода в атласе, содержащем три версии каждого изображения для iPad с сетчаткой, iPad без сетчатки и iPhone с сетчаткой, приводит к тому, что приложение использует память для всех из них. Не только те, которые ему нужны.
Как я могу сделать так, чтобы в память загружались только те текстуры, которые нужны устройству, на котором работает приложение?