NSInteger始终为零

时间:2011-12-09 17:12:12

标签: objective-c cocoa-touch int nsinteger

我有一个NSInteger总是返回零:(我声明它像:

NSInteger level;
@property(nonatomic, assign) NSInteger level;

综合:

@synthesize fileName, filePath, theActualIndexPath, titleBar, level;

然后使用NSLog(@"%d", level)时总是返回0,即使在

之后
level++; 

或者

level += 1;

我做错了什么?我100%肯定会向level添加1,但无法理解错误:(

编辑:

我使用此NSInteger的if语句

if (level == 0) {
    self.navigationItem.title = @"Test";

} else {
    self.navigationItem.title = self.titleBar;

}

即使在添加1

之后,它始终在第一个结束

3 个答案:

答案 0 :(得分:1)

要更改的变量与访问的变量不同(在if语句中)。

在控制台中打印level的值和地址(正在设置之前和之后)以及访问s的位置(在if语句中。

答案 1 :(得分:1)

你为什么两次声明level

删除此行:NSInteger level;

level的第一个声明是一个全局范围的变量,第二个声明是该类的实例变量。根据您的范围,level增加++levellevel打印的NSLog("%d", level);不同,并由if (level == 0)进行测试。

修改

是。如果分配视图控制器的另一个实例,为什么不期望新分配level?如果你想这样做那么你要么做变量static,它在同一个类的实例之间共享它,或者确保你做这样的事情:

MyViewController *newViewController = [[MyViewController alloc] init]; // However this goes
newViewController.level = oldViewController.level; // Make sure you pass the level on

答案 2 :(得分:0)

试试这个:
在.h

@property(nonatomic) NSInteger level; // not an object assign not needed
<。> <。>

@synthesize level = _level;  
self.level = self.level + 1;  // and try this

删除该行

NSInteger level;

这有效吗?