iOS函数调用一次(初始化应用程序时)

mer*_*ert 5 objective-c viewdidload ios

我有一个iOS应用程序.应用程序有2种不同的视图:Main和Settings.实际上,应用程序需要在主视图中使用之前加载和初始化某些库和框架.

当我把这个初始化放在viewDidLoad方法中时,它工作正常.但是当转到"设置"并返回"主视图"时,初始化将再次启动,这不是我想要的,并且应用程序会导致内存问题.

我需要一个在应用程序启动时调用一次的方法.任何的想法?

编辑:我切换到选项卡视图.它加载一次视图.这是另一种解决方案.

Mik*_*ler 28

您在其中一条评论中声明您不想将此代码放入,application:didFinishLaunching并且您希望将其保留在viewDidLoad中.您可以使用此代码段仅在第一次调用时运行代码:

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    // code here
});
Run Code Online (Sandbox Code Playgroud)

内部块只执行一次.如果再次加载视图,则不会调用该块.请注意,有一个Xcode代码片段,您可以通过开始dispatch_once在编辑器中键入来访问它:

在此输入图像描述

在此输入图像描述


Nov*_*arg 7

使用这个:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)

它应该在你的appdelegate类中.

希望能帮助到你