Ios 方法不会更改整数值

Ios 方法不会更改整数值,ios,objective-c,integer,Ios,Objective C,Integer,也许有人能帮我澄清一下 我有4个UITableViewController,第一个有一个属性 @property (nonatomic, assign) int editStarted; 我在FirstViewController中设置了此属性: -(id)init { // Call the superclass's designated initializer self = [super initWithStyle:UITableViewStyleGrouped];

也许有人能帮我澄清一下

我有4个UITableViewController,第一个有一个属性

@property (nonatomic, assign) int editStarted;
我在FirstViewController中设置了此属性:

-(id)init
{
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

    editStarted = 0; // NO
    }
    return self;
}
FirstViewController *firstView = [[FirstViewController alloc] init];
  NSLog(@"editStarted: %d,",firstView.editStarted);
现在,当我从视图控制器1导航到2到3到4,并在FourthViewController中执行类似操作时:

-(id)init
{
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

    editStarted = 0; // NO
    }
    return self;
}
FirstViewController *firstView = [[FirstViewController alloc] init];
  NSLog(@"editStarted: %d,",firstView.editStarted);
NSLOG将打印0。(如果我在init中给它另一个值,它将打印该值。)

回到FirstViewController,我这样做,将值更改为1:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 editStarted = 1;
}
现在,当我从视图控制器1导航到2到3到4时,该值未更改为1,但仍然为0

这是标准行为还是我做错了什么? 我已经考虑过从视图控制器1到2到3到4传递
editStarted
的可能性,但我不确定这是否正确。这听起来有点多余

这是:

FirstViewController *firstView = [[FirstViewController alloc] init];
创建与VC 1相同类的新实例。但它与您最初看到的实例不同,因此具有不同的设置

您应该使用导航控制器获取“真实”VC 1并记录其设置



将变量从一个VC传递到下一个VC是一种标准方法,但这取决于您尝试做什么。在某些情况下,最好将一个值设置为
NSUserDefaults
,例如,这样可以从多个不同的屏幕检查/使用/更改该值。

您创建了同一类的新实例,以便为其分配新内存,这就是为什么它总是显示为零的原因

因此,您有更好的选择将父类的对象指定给子类/


否则,只创建一次类的对象…

当然,这是有意义的!非常感谢。使用导航控制器指的是appDelegate.m,我在其中定义“-(BOOL)application:(UIApplication*)application使用选项(NSDictionary*)launchOptions”等完成启动。仅供参考,我想从视图控制器1转到4,当我在4中时,我想在VC1中显示从2到4的数据。我使用2到4来做一个特定的选择。在VC中,
self.navigationController
会让你找到导航控制器。委托关系适用于将选择数据从2、3和4传递回1。