抱歉,这本身可能不是一个编程问题,但更多的是对iOS生命周期功能性质的询问.

我有一个应用程序,其中有一个函数,可以创建四个数组,并通过数据库查询填充它们.起初,我从viewDidLoad函数调用了这个函数,然而,每当加载视图时,视图实际出现之前都需要时间(大约3-4秒).所以我创建了一个activityViewIndicator,我的viewDidLoad函数看起来像:

- (void)viewDidLoad:(BOOL)animated{
    [super viewDidLoad];

    NSLog(@"viewDidLoad Entered");
    [self.activityIndicatorView startAnimating];

    partInput.delegate = self;
    brandInput.delegate = self;
    barcodeInput.delegate = self;
    itemNameInput.delegate = self;

    //initializeArrays is the function that initializes the arrays
    [self initializeArrays];

    [self.activityIndicatorView stopAnimating];

}

但是,这不起作用,因为当应用程序仍在前一个视图中时会触发viewDidLoad函数.视图只有在完成viewDidLoad后才会显示.因此,我所做的是将数组初始化移到我的viewDidAppear函数中,如下所示:

- (void)viewDidAppear:(BOOL)animated{
    NSLog(@"viewDidAppear loaded successfully");
    [self.activityIndicatorView startAnimating];

    partInput.delegate = self;
    brandInput.delegate = self;
    barcodeInput.delegate = self;
    itemNameInput.delegate = self;

    [self initializeArrays];

    [self.activityIndicatorView stopAnimating];

}

然而,当我部署它时,没有任何延迟,这使得activityIndicatorView毫无用处.

我的问题是,为什么在我看来viewDidLoadviewDidAppear之间存在"性能差异"?

推荐答案

请每次都遵循下面的视图控制器生命周期.您将对应用程序的编码和性能感到惊讶.

在此处输入图像描述

Objective-c相关问答推荐

在没有for循环的情况下获取另一个数组中每个对象的属性值数组

导航回上一个视图控制器

iOS:警告try 呈现其视图不在窗口层次 struct 中的 ViewController

Objective C 中的 RSA 实现

如何使用第一个字符作为部分名称

如何使用 UIStepper

将长按手势和拖动手势结合在一起

ARC的正确桥接?

获取对 UIApplication 委托的引用

对 nil 对象进行快速枚举

在Objective-C中从类名的NSString创建对象

在 Xcode 5 中运行代码覆盖时出现数十个profiling:invalid arc tag

iOS6:supportedInterfaceOrientations 不起作用(被调用但界面仍然旋转)

为什么不鼓励使用伞式框架?

NSCharacterSet:如何将_添加到 alphanumericCharacterSet 文本限制?

如何在 iOS 中计算 SHA-2(最好是 SHA 256 或 SHA 512)哈希?

Objective-c 协议前向声明

如何更改标签栏上的非活动图标/文本 colored颜色 ?

如何将 printf 与 NSString 一起使用

UICollectionView:如何检测滚动何时停止