【发布时间】:2010-02-03 23:39:10
【问题描述】:
这让我在我的实用程序应用程序中感到烦恼:我有一个以此处指定的方式声明的单例:http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
我的单例有 4 个声明的属性:3 个浮点数和一个整数。现在,在我的视图控制器中,我在 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) 将视图翻转回 Main
4)将视图翻转回 Flipside 并将浮动设置为先前的值。现在设置 int。
5) 转回 Main
6) 将视图翻转回 Flipside,int 设置为之前的值,但浮点数设置为 0
有什么想法吗?
【问题讨论】:
-
更新单例方法什么时候调用?您能否提供有关该方法的更多详细信息?
-
显示更多代码。问题很可能出在单例的创建中。
标签: iphone cocoa cocoa-touch singleton