У меня есть IntroViewController с очень большим изображением, которое увеличивает память моего приложения примерно на 1,5 МБ.Изображение устанавливается на UIImageView в NIB контроллера вида.
После завершения вступления я вызываю release
на IntroViewController, который затем успешно вызывает dealloc
для себя и вызывает release
набольшой UIImageView.Тем не менее, моя память в инструментах, кажется, не возвращается снова.Я могу проверить разницу в памяти, просто переименовав изображение в UIImageView в NIB, чтобы он ничего не мог найти, и затем память падает примерно на 1,5 МБ.
Так почему я не возвращаю эту память обратно?Есть ли что-то, чего мне не хватает, что мешает UIImageView быть должным образом удаленным?
Спасибо,
: - Джо
-------ДОБАВЛЕНО: КОД ------
#import <UIKit/UIKit.h>
@class AppDelegate_iPhone;
@interface IntroViewController : UIViewController
{
AppDelegate_iPhone *appDelegate;
UIImageView *wheelImageView;
UIView *copyOverlayView;
}
@property (nonatomic, retain) IBOutlet UIImageView *wheelImageView;
@property (nonatomic, retain) IBOutlet UIView *copyOverlayView;
- (void)startAnimation;
@end
@implementation IntroViewController
@synthesize wheelImageView, copyOverlayView;
- (void)viewDidLoad
{
[super viewDidLoad];
appDelegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
[self startAnimation];
}
- (void)viewDidDisappear:(BOOL)animated
{
[self.wheelImageView removeFromSuperview];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload
{
[super viewDidUnload];
self.wheelImageView.image = nil;
appDelegate = nil;
}
- (void)dealloc
{
[wheelImageView release];
[copyOverlayView release];
[super dealloc];
}
- (void)startAnimation
{
self.wheelImageView.transform = CGAffineTransformMakeScale(0.5, 0.5);
[UIView beginAnimations:@"wheelScale" context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(wheelScaleDidFinish)];
self.wheelImageView.transform = CGAffineTransformMakeScale(1.0, 1.0);
[UIView commitAnimations];
[UIView beginAnimations:@"copyOverlayFade" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelay:1.0];
self.copyOverlayView.alpha = 0;
[UIView commitAnimations];
}
- (void)wheelScaleDidFinish
{
[appDelegate introAnimationFinished];
}
@end
---- РЕДАКТИРОВАТЬ
Кто-нибудь может помочь?Я в замешательстве, и это приводит к сбою моего приложения на iPhone из-за большого объема памяти :( не могу понять, как избавиться от глупого изображения! Grrrr ...