objective C Basic question

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

1
задан Travis 20 August 2010 в 06:24
поделиться

2 ответа

Если ваш контроллер представления является свойством AppDelegate, как и ссылка на код

@interface AppDelegate_Shared : NSObject <UIApplicationDelegate, UIAlertViewDelegate, OMFDataLoadDelegate> {

    NSManagedObjectModel *managedObjectModel;
    NSManagedObjectContext *managedObjectContext;       
    NSPersistentStoreCoordinator *persistentStoreCoordinator;

    UIWindow *window;

    UITabBarController *tabBarController;

}

, то, вероятно, он выделяется AppDelegate при его выделении. Согласно документации Apple, viewDidLoad запускается после загрузки представления в память, что может немного сбивать с толку, поскольку язык может заставить вас поверить, что он загружен на экран.

http://developer.apple.com/iphone/library/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW25

Переместите свой 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;
}
2
ответ дан 2 September 2019 в 21:58
поделиться

Если исходное представление не загружено, очевидно, что приложение не завершило запуск.

Сообщения отправляются в правильном порядке.

0
ответ дан 2 September 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: