我有一个从Xcode 6创建的项目。在根视图控制器中,viewDidAppear
经历了这种奇怪的延迟。在下面的代码中,如果从viewDidLoad
或viewWillAppear
拨打电话,则会立即创建按钮和背景颜色。但是如果从viewDidAppear
打电话会有延迟。
如果按钮是从viewDidLoad
或viewWillAppear
创建的,则回复不是即时的。
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__);
}
答案 0 :(得分:0)
viewDidAppear:在视图出现后调用,因此如果您正在执行更改视图封面之类的操作,则可以感知到它。如果您不想看到颜色更改,请在其他一个早期生命周期方法中设置颜色。
答案 1 :(得分:0)
我发现Google的admob库造成了这个问题。我使用的是6.4.x版。请注意,正如我在我的问题中所述,AppDelegate或视图控制器中没有任何加载。在那个阶段,没有任何一个混淆课程被使用。
此问题仅出现在iOS 9中。