为什么当再次调用viewDidLoad时保留属性值

时间:2018-10-23 11:20:39

标签: objective-c

我在类中有一个属性,默认值为false

@implementation viewController1

BOOL variable1 = false;

viewDidLoad首次通话时。其值为false。然后,我用一种方法将其更改为true。下次名为variable1的viewDidLoad为true时。
但默认值为false。这意味着它保持了价值? 我可以修复它,但可以在viewDidLoad中初始化它,但我想知道原因。

我再次使用以下代码对其进行初始化:

UINavigationController *nc1;

ViewController1 * viewController1 = [[ViewController1 alloc] init];
    UITabBarItem *tab1 = [[UITabBarItem alloc] init];
    [tab1 setTitle: @”tab1”;
    nc1 = [[UINavigationController alloc] init];
    [viewController1 setTabBarItem:tab1];
    nc1.viewControllers = [NSArray arrayWithObjects: viewController1, nil];


[navigations addObject:nc1];

tabController.viewControllers = navigations;

1 个答案:

答案 0 :(得分:2)

那不是类中的属性(或实例变量)。这是文件中的全局变量。

实例变量必须用大括号括起来:

@implementation viewController1 {
    BOOL variable1 = false;
}

- (void)viewDidLoad {
    // code
}

@end

没有花括号,variable1只是一个与类实例无关的全局变量。这就是为什么在创建新的视图控制器时它似乎保持其旧值的原因。