Cocos2D / iOS7: Kontinuierlich steigende Speichernutzung für Boilerplate-Code
So sieht es mit dem iOS7-Simulator aus, wenn die Anwendung nur ohne Benutzerinteraktion ausgeführt wird (auch ich führe keinen Code von mir aus, nur Boilerplate Cocos2D):
Kein solches Problem mit 5.0-> 6.1. Der Code, der dieses Problem verursacht, ist Cocos2D Boilerplate-Code, den ich mit Kommentaren zu minimieren versucht habe. Dies ist der Mindestcode von App Delegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Create the main window
window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// CCGLView creation
CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
director_ = (CCDirectorIOS*) [CCDirector sharedDirector];
director_.wantsFullScreenLayout = YES;
// Display FSP and SPF
[director_ setDisplayStats:YES];
// set FPS at 60
[director_ setAnimationInterval:1.0/60];
// attach the openglView to the director
[director_ setView:glView];
[glView setMultipleTouchEnabled:YES];
// 2D projection
[director_ setProjection:kCCDirectorProjection2D];
// [director setProjection:kCCDirectorProjection3D];
// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
if( ! [director_ enableRetinaDisplay:YES] )
CCLOG(@"Retina Display Not supported");
// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
// You can change this setting at any time.
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
// If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix.
// On iPad HD : "-ipadhd", "-ipad", "-hd"
// On iPad : "-ipad", "-hd"
// On iPhone HD: "-hd"
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
[sharedFileUtils setEnableFallbackSuffixes:NO]; // Default: NO. No fallback suffixes are going to be used
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; // Default on iPhone RetinaDisplay is "-hd"
[sharedFileUtils setiPadSuffix:@"-ipad"]; // Default on iPad is "ipad"
[sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"]; // Default on iPad RetinaDisplay is "-ipadhd"
// Assume that PVR images have premultiplied alpha
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
// Create a Navigation Controller with the Director
navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
navController_.navigationBarHidden = YES;
// for rotation and other messages
[director_ setDelegate:navController_];
// set the Navigation Controller as the root view controller
[window_ setRootViewController:navController_];
// make main window visible
[window_ makeKeyAndVisible];
return YES;
}
Ich habe auch auskommentiertCCDirector
vondirectorDidReshapeProjection
Start, um meinen eigenen Code zu beseitigen. Wenn die Anwendung jetzt gestartet wird, wird die Bildrate nur auf dem schwarzen Bildschirm angezeigt.
Das gleiche Ergebnis sehe ich bei Instruments.
Leider kann iOS 7 nicht auf dem Gerät getestet werden, aber ich erwarte nicht, dass der Simulator so funktioniert.
Aktualisieren:
Ich habe 2 Mark Generations mit folgendem Ergebnis gemacht.
Alle Elemente sind die 64-Byte-Zuordnungen. Ich habe keine Ahnung, welcher Typ sie sind. Erwähnenswert ist, dass ich die neueste stabile Cocos2D 2.1 verwende.
Update Nr. 2:
Aufrufstapel mit 64-Byte-Zuweisung.