Цель C Основной вопрос - PullRequest
       22

Цель C Основной вопрос

1 голос
/ 20 августа 2010

Я сделал простое приложение, используя шаблон, основанный на представлении. И я поместил только nslog в метод didload вида в файле viewController, а также в метод applicationDidFinishLaunch (в appDelegate), чтобы проверить, какой файл класса вызван первым.

после запуска я получил: viewController Сначала запустите, а затем appdelegate ... но я думаю, что appdelegate должен сначала вызываться другими в соответствии с необходимостью ... PLZ, дайте мне правильное объяснение.

Заметил, что --i не вызывал viewController (не создавал объект) в моем appDelegate (внутри приложения didFinishLaunch). я использую ios4

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Если ваш View Controller является свойством 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;
}
0 голосов
/ 20 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...