Ich schreibe eine Anwendung, die etwa 40 44-KB-JPEGs gleichzeitig im Speicher halten muss. Ich habe gehört, dass Anwendungen etwa 22 Megabyte verwenden können, bevor sie eine Warnmeldung zu wenig Speicher auslösen, also bin ich mir ziemlich sicher, dass dies möglich sein sollte. Sobald jedoch gehe ich um ein Megabyte geladen werden, beginnen diese Meldungen in der Konsole Aufspringen:Warum verbraucht das Laden von mehr als einem Megabyte von Bildern den gesamten Speicher meines iPhones?
Mon Jun 8 16:37:19 unknown configd[21] : kernel memory event (90), free: 374, active: 1736, inactive: 959, purgeable: 0, wired: 6260 Mon Jun 8 16:37:20 unknown configd[21] : kernel memory event (95), free: 363, active: 876, inactive: 492, purgeable: 0, wired: 6241 Mon Jun 8 16:37:20 unknown SpringBoard[22] : Memory level is critical (5%). No apps to kill. Will kill SpringBoard Mon Jun 8 16:37:24 unknown SpringBoard[22] : Jetsaming SpringBoard...
Dann ist es mir wieder auf dem Home-Bildschirm Dumps.
Hier ist der Code, den ich über die Bilder laden:
#define NUM_IMAGES 40
@interface MyClass : NSObject {
UIImageView* imageView;
UIImage* loadedImages[NUM_IMAGES];
}
- (void)initImages;
@property (nonatomic, retain) IBOutlet UIImageView* imageView;
@end
@implementation MyClass
@synthesize imageView;
- (void)initImages {
int i;
for (i = 0; i < NUM_IMAGES; i++) {
loadedImages[i] = [UIImage imageNamed:[NSString stringWithFormat:IMAGE_FORMAT, i+1]];
}
imageView.image = loadedImages[0];
}
@end
Gibt es etwas, was ich falsch hier? Können iPhone-Anwendungen wirklich nur ein Megabyte Speicher verwenden?
Dank für das half es. Ich habe es die JPEG-Daten für die Bilder mit voller Auflösung im Speicher behalten und viertel Auflösung Bilder beim Ändern oder Laden von Bildern. Danke! –