La function iOS se llama una vez (cuando la aplicación se inicializa)

Tengo una aplicación de iOS. La aplicación tiene 2 vistas diferentes: Principal y Configuración. De hecho, la aplicación necesita cargar e inicializar alguna biblioteca y marco antes de usarla en Main View.

Cuando pongo esta initialization en el método viewDidLoad , funciona bien. Pero cuando vaya a Configuración y vuelva a Vista Principal, la initialization comienza de nuevo, que no es lo que quiero, y la aplicación resulta en un problema de memory.

Necesito un método que se llama una vez cuando se inicia la aplicación. ¿Alguna idea?

EDIT: cambié a vista con tabs. Carga vistas una vez. Esta es otra solución.

Usa este:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

Debería estar en tu class appdelegate.

Espero eso ayude

Usted indica en uno de sus comentarios que no desea poner este código en la application:didFinishLaunching y desea mantenerlo en viewDidLoad. Puede usar este fragment para ejecutar su código solo la primera vez que se invoca:

 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // code here }); 

El bloque interno solo se ejecutará una vez. Si la vista se carga de nuevo, no se llama al bloque. Tenga en count que hay un fragment de código Xcode para esto al que puede acceder comenzando a escribir dispatch_once en el editor:

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

También puedes usar

 + [NSObject initialize] 

Defina un método de class de ese nombre, y se ejecutará una vez antes de que se envíen otros posts a esa class:

 + (void)initialize { // Put one-time initialization code here. } 

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html#//apple_ref/occ/clm/NSObject/initialize

En su AppDelegate , uno de los objects garantizados para tener una sola instancia (singleton) en toda la aplicación, puede declarar una variable de instancia / propiedad: BOOL initialized;

Y luego en viewDidLoad de su UIViewController , comtesting si se ha inicializado el código; si no es así, ejecute el código y establezca la variable en true:

  if (!initialized) { // Code goes here initialized = true; }