viewDidAppear UI难以置信的延迟

时间:2015-09-28 13:21:41

标签: ios uiviewcontroller

我有一个从Xcode 6创建的项目。在根视图控制器中,viewDidAppear经历了这种奇怪的延迟。在下面的代码中,如果从viewDidLoadviewWillAppear拨打电话,则会立即创建按钮和背景颜色。但是如果从viewDidAppear打电话会有延迟。

如果按钮是从viewDidLoadviewWillAppear创建的,则回复不是即时的。

viewDidAppear中的加法算法是立即的。

当前主线程和主线程为1。

AppDelegate中,didFinishLaunchingWithOptions中没有任何内容。

视图控制器的init中没有任何加载。

有什么建议吗?

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor redColor];
    [self createButton];
     NSLog(@"%s  currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]);
}
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.view.backgroundColor = [UIColor cyanColor];
//    [self createButton];
    NSLog(@"%s  currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]);
}
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"%s  currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]);
    self.view.backgroundColor = [UIColor blueColor];
    int i = 2;
    int j = 4;
    int m = i + j;
    NSLog(@"%s i:%u j:%u m: %u", __PRETTY_FUNCTION__, i,j, m);

//    [self createButton];
}
-(void)createButton
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"button" forState:UIControlStateNormal];
    [button addTarget: self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    button.frame = CGRectMake(50, 50, 100, 40);
    [self.view addSubview:button];
}
-(void)buttonPressed:(id)sender
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

2 个答案:

答案 0 :(得分:0)

viewDidAppear:在视图出现后调用,因此如果您正在执行更改视图封面之类的操作,则可以感知到它。如果您不想看到颜色更改,请在其他一个早期生命周期方法中设置颜色。

答案 1 :(得分:0)

我发现Google的admob库造成了这个问题。我使用的是6.4.x版。请注意,正如我在我的问题中所述,AppDelegate或视图控制器中没有任何加载。在那个阶段,没有任何一个混淆课程被使用。

此问题仅出现在iOS 9中。