gpt4 book ai didi

iphone - ViewDidLoad 在 initWithNibName 之前被调用?

转载 作者:太空狗 更新时间:2023-10-30 03:30:35 24 4
gpt4 key购买 nike

我遇到了最奇怪的错误,我希望有人能帮助我。这是我创建 View Controller 并将其推送到 navigationController 时的代码。问题是将随机变量传递给新的 View Controller 。我尝试在 init 方法中传递它,并通过下面注释的行传递它。

    MultipleBet *multipleBet = [[MultipleBet alloc] initWithMaxNumber:numbers andMaxStars:stars andRandom:self.random];
NSLog(@"RANDOM1: %d", self.random);
//[multipleBet setRandom:self.random];

UIBarButtonItem *backButton = [[[UIBarButtonItem alloc] init] autorelease];
backButton.title = @"Voltar";
self.navigationItem.backBarButtonItem = backButton;
[self.navigationController pushViewController:multipleBet animated:YES];

[multipleBet release];

但是,当我访问 MultipleBet 的 viewDidLoad 中的随机变量时,它始终为 FALSE。

这里是 MultipleBet 的代码:

- (id)initWithMaxNumber:(int)maxNumbers andMaxStars:(int)maxStars andRandom:(BOOL)isRandom {
self = [super initWithNibName:@"MultipleBet" bundle:[NSBundle mainBundle]];
...

self.random = isRandom;
NSLog(@"RANDOM2: %d", self.random);
NSLog(@"RANDOM2.1: %d", isRandom);

return self;
}

这里是 viewDidLoad 的代码:

- (void)viewDidLoad {
[super viewDidLoad];


NSLog(@"RANDOM2.2: %d", self.random);

}

我这样声明变量和属性:

BOOL random;
@property (nonatomic) BOOL random;

输出总是:
随机2.2:0
随机2:1
随机2.1:1
随机 1:1

为什么 viewDidLoad 的 NSLog 在所有其他之前输出?它应该是最后一个......难道是因为我的自定义初始化方法?我调用了 [super init],所以这应该不是问题......

最佳答案

viewDidLoadinit* 方法不能保证一个接一个地执行。 init* 方法中的代码可能会导致加载 View ,因此即使 init* 方法尚未完成,也会调用 viewDidLoad

很可能是您省略的部分中的某些代码导致加载 View 。如果你愿意向我们展示那部分,也许我们可以指出来。或者,您也可以将 self.random = isRandom; 行移动到 if (self) block 中的第一行,看看是否可行。这样,在您分配 self.random 之后,将执行导致 View 加载的任何内容。

- (id)initWithMaxNumber:(int)maxNumbers andMaxStars:(int)maxStars andRandom:(BOOL)isRandom {
self = [super initWithNibName:@"MultipleBet" bundle:[NSBundle mainBundle]];
if (self) {
// do this first
self.random = isRandom;
NSLog(@"RANDOM2: %d", self.random);
NSLog(@"RANDOM2.1: %d", isRandom);

// do the other code after
...
}

return self;
}

关于iphone - ViewDidLoad 在 initWithNibName 之前被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com