好的,所以我一直在努力解决这个问题,我也不知道...基本上,我的ios应用程序中有两个类,第一个是我的主视图,第二个是用于存储一些变量的类。我有一个开关,当开关的状态更改时,它将另一个类中的布尔型getter / setter变量设置为该状态。然后,我得到该值并将其打印在日志中。但是我注意到的是,每次使用代码调用viewcontroller时:
StoredVars *stored = [[StoredVars alloc]init];
值默认为0 ...为了显示这一点,我添加了viewcontroller调用的第二个实例,并且两个log调用输出不同的值。 Switchy是第二类“ StoredVars”中的布尔设置器/获取器。有人可以解释为什么会这样吗?下面是我的第一堂课的.m文件中的代码:
StoredVars *stored = [[StoredVars alloc]init];
[stored setSwitchy:(_toggle.on)];
NSLog(@"%d", [stored switchy]);
StoredVars *stored2 = [[StoredVars alloc]init];
NSLog(@"%d", [stored2 switchy]);
如果我打开开关,则第一个日志打印为1,第二个日志打印为0。如果我关闭开关,则它们都打印为0。
感谢大家 :)
最佳答案
这条线
StoredVars *stored = [[StoredVars alloc]init];
正在销毁先前存储在
stored
变量中的所有内容并创建一个全新的对象,换句话说,每次调用此行时,都将销毁'store'的先前内容。您只需要初始化一次(也许在ViewController的init
方法中),然后继续使用它而无需重新初始化。[stored setSwitchy:(_toggle.on)];
关于ios - uiviewcontroller分配访问时更改setter/getter值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22085306/