Я практикуюсь над тем, как работает TabViewcontroller. Теперь у меня есть 2 подкласса UIViewcontroller. Один из них - HypnosisViewController, другой - TimeViewController. Что я хотел проверить, так это то, как - (void) viewDidLoad работает, когда симулятор IOS получает предупреждение о памяти. И я сделалПредупреждение о неисправности не работает должным образом
- Собрал и запустил приложение
- Консоль сказал «HypnosisViewcontroller загружен свое мнение.»
- Переключил другую вкладку (TimeViewController)
- Пила сообщение в консоли. В нем говорится: «TabViewcontroller загрузил свой вид»
- Была ли команда предупреждения о симуляторе памяти в симуляторе IOS
- Консоль «Предупреждение о сохранении памяти HypnoTime».
- Переключился обратно в HypnosisViewcontroller, чтобы увидеть, говорит ли консоль: «HypnosisViewcontroller загрузил его представление». еще раз.
Таким образом, проблема здесь в HypnosisViewcontroller не уничтожается и не создается снова. (Потому что я не могу видеть сообщение журнала, когда я возвращаюсь к HypnosisViewcontroller.) Однако я наклонил представление, которое не на экране, должно быть уничтожено во время предупреждения о памяти.
Я что-то пропустил? Заранее спасибо!
HypnosisViewController.m:
#import "HypnosisViewController.h"
#import "HypnosisView.h"
@implementation HypnosisViewController
-(void)loadView
{
//Create a view
CGRect frame = [[UIScreen mainScreen] bounds];
HypnosisView *v = [[HypnosisView alloc] initWithFrame:frame];
// Set it as *the* view of this view controller
[self setView:v];
}
-(id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)bundle
{
self = [super initWithNibName:nil
bundle:nil];
if(self){
//Get the tab bar item
UITabBarItem *tbi = [self tabBarItem];
//Give it a label
[tbi setTitle:@"Hypnosis"];
//Create a UIImage from a file
//This will use [email protected] on retina display devices
UIImage *i = [UIImage imageNamed:@"Hypno.png"];
// Put that image on the tab bar item
[tbi setImage:i];
}
return self;
}
-(void)viewDidLoad
{
// Always call the super implmetaion of viewDidload
[super viewDidLoad];
NSLog(@"HypnosisViewcontroller loaded its view");
}
@end
TimeViewController.m:
#import "TimeViewController.h"
@implementation TimeViewController
-(IBAction)showCurrentTime:(id)sender
{
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
[timeLabel setText:[formatter stringFromDate:now]];
[timeLabel2 setText:[formatter stringFromDate:now]];
}
-(id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)bundle
{
// Call the superclass's designated initializer
self = [super initWithNibName:nil
bundle:nil];
//Get a pointer to the application bundle object
// NSBundle *appBundle = [NSBundle mainBundle];
// self = [super initWithNibName:@"TimeViewController"
//bundle:appBundle];
if(self){
//Get the tab bar item
UITabBarItem *tbi = [self tabBarItem];
//Give it a label
[tbi setTitle:@"Time"];
//Create a UIImage from a file
//This will use [email protected] on retina display devices
UIImage *i = [UIImage imageNamed:@"Time.png"];
// Put that image on the tab bar item
[tbi setImage:i];
}
return self;
}
-(void)viewDidLoad
{
// Always call the super implmetaion of viewDidload
[super viewDidLoad];
NSLog(@"TimeViewcontroller loaded its view");
// [[self view] setBackgroundColor:[UIColor greenColor]];
}
@end
@: Эрик Цюань Спасибо за ответ! О, я забыл добавить что-то важное. Я не могу видеть сообщение журнала, когда я возвращаюсь к HypnosisViewcontroller. – Tosh
ОК, поэтому вы имеете в виду, когда вы переключаетесь обратно на 'HypnosisViewcontroller' после того, как вы имитировали предупреждение о памяти. Сообщение не отображается –
Да, это так! – Tosh