首页 > 试题广场 >

当前有两个 ViewController已被显示到根视图中,

[单选题]
当前有两个 ViewController已被显示到根视图中,控制台打印的文本顺序为?(      )
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
static int number = 1;
NSLog(@"%d", number);
number += 2;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
number -= 1;
});
NSLog(@"%d", number);
}
@end
  • 1,2,1,2
  • 1,2,3,4
  • 1,3,2,4
  • 1,2,2,4
题目中“有两个 ViewController已被显示到根视图中”,应当是指同一个ViewController被添加到根视图两次,这样答案才是D。如果是不同的ViewController,而只是viewDidLoad里的代码相同,答案应是A。
题目不严谨。
发表于 2020-03-13 23:08:59 回复(1)

这题莫名其妙

发表于 2019-09-07 10:27:56 回复(0)
静态变量(程序中有用到这个变量)在程序加载到内存中的时候,也一起加载到内存中,存储在静态区中。static int number = 1;只会执行一次,包括dispatch_once也只执行一次。所以第一次打印1,2;第二次打印2,4
发表于 2021-04-30 14:10:46 回复(0)
<p>加2次,为啥viewdidload走了2次,view已经加载完了</p>
发表于 2020-11-18 08:58:43 回复(0)

有没有人解释一下

发表于 2019-11-28 11:15:23 回复(0)