我有一个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
之后,它始终在第一个结束答案 0 :(得分:1)
要更改的变量与访问的变量不同(在if
语句中)。
在控制台中打印level
的值和地址(正在设置之前和之后)以及访问s的位置(在if
语句中。
答案 1 :(得分:1)
你为什么两次声明level
?
删除此行:NSInteger level;
level
的第一个声明是一个全局范围的变量,第二个声明是该类的实例变量。根据您的范围,level
增加++level
与level
打印的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;
这有效吗?