这让我在我的实用程序应用程序中感到烦恼:我有一个以这里指定的方式声明的单例:http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
我的单身人士有4个声明的属性:3个浮点数和一个int。现在,在我的视图控制器中,我在updateSingleton方法中设置了这样的属性:
[[Singleton sharedSingleton] setMyInt: var1];
[[Singleton sharedSingleton] setMyFloat1: var2];
[[Singleton sharedSingleton] setMyFloat2: var3];
[[Singleton sharedSingleton] setMyFloat3: var4];
在我的viewDidLoad方法中,我得到如下属性:
int m = [[Singleton sharedSingleton] myInt];
float r = [[Singleton sharedSingleton] myFloat1];
float g = [[Singleton sharedSingleton] myFloat2];
float b = [[Singleton sharedSingleton] myFloat3];
然后我将int值分配给UISegmentedControl,并将浮点值分配给UISliders。所以问题是每当我运行我的应用程序时,浮点数就会存储在单例中直到我设置int - 如果我设置浮点数,然后设置int,浮点数总是在每次调用viewDidLoad时重置为0。所以顺序是:
1)启动应用程序
2)翻转视图并设置浮子(r,g,b)
3)将视图翻转回主体
4)将视图翻转回Flipside,并将浮点数设置为先前的值。现在设置int。
5)翻回主体
6)将视图翻转回Flipside并将int设置为先前的值,但浮点数设置为0
有什么想法吗?
答案 0 :(得分:1)
最简单的解释是,你实际上并没有获得单身人士。每次使用之前,请尝试记录[Singleton sharedSingleton]
返回的对象,并查看地址是否始终相同。
答案 1 :(得分:0)
经过一些测试后,我认为问题出现了,因为每次加载视图控制器时,UISegmentedControl selectedSegmentIndex都会重置为IB定义的选择。