i made a simple application using view based template.and i put only nslog inside view didload method in viewController file and also inside applicationDidFinishLaunch method (in appDelegate )to checked which class file called first.
after the run i got: viewController Run first and then appdelegate ..but i think appdelegate should first then other's called according to the need ... plz give me the proper reasion.
Noted that --i did not call viewController (didnot make object) in my appDelegate(inside application didFinishLaunch) . i am using ios4
Если ваш контроллер представления является свойством AppDelegate, как и ссылка на код
@interface AppDelegate_Shared : NSObject <UIApplicationDelegate, UIAlertViewDelegate, OMFDataLoadDelegate> {
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
UIWindow *window;
UITabBarController *tabBarController;
}
, то, вероятно, он выделяется AppDelegate при его выделении. Согласно документации Apple, viewDidLoad запускается после загрузки представления в память, что может немного сбивать с толку, поскольку язык может заставить вас поверить, что он загружен на экран.
Переместите свой NSLog выражение для viewDidAppear для ожидаемого результата. Вот два образца фрагмента с ожидаемой загрузкой операторов.
ViewController.m
- (void) viewDidLoad {
NSLog(@"1st - this occurs when appDelegate allocates this object");
}
- (void) viewDidAppear {
NSLog(@"3rd - this should appear after the applicationDidFinishLaunchingStatement");
}
AppDelegate_Shared.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"2. Starting AppDelegate_Shared");
[window addSubview:self.tabBarController.view];
[window makeKeyAndVisible];
NSLog(@"4. Leaving AppDelegate_Shared");
return YES;
}
Если исходное представление не загружено, очевидно, что приложение не завершило запуск.
Сообщения отправляются в правильном порядке.