Iphone Utility App Singleton问题

时间:2010-02-03 23:39:10

标签: iphone cocoa cocoa-touch singleton

这让我在我的实用程序应用程序中感到烦恼:我有一个以这里指定的方式声明的单例: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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

最简单的解释是,你实际上并没有获得单身人士。每次使用之前,请尝试记录[Singleton sharedSingleton]返回的对象,并查看地址是否始终相同。

答案 1 :(得分:0)

经过一些测试后,我认为问题出现了,因为每次加载视图控制器时,UISegmentedControl selectedSegmentIndex都会重置为IB定义的选择。