0

我有一个使用导航控制器和 tableViews 的应用程序,我想创建一个类来做一些简单的信息存储,这些信息在导航不同视图而不保存到磁盘时保持持久性。

我可以singleton只用class methods 创建一个,但在这种情况下,我需要创建将数据保存为的集合类instance variable(因为 @properties 不适用于类方法)。我只看到在 iOS 的属性中声明的对象,所以这是不受欢迎的吗?

这个类看起来像这样

标题:

+ (BOOL) addObject: (id) object;
+ (BOOL) removeObject: (id) object;
+ (NSInteger) count;

私下我会有一个 NSArray 用于存储

NSArray *cache;

但这是完成任务的好方法吗?或者是否可以有一个具有实例方法的非单例类并在不同的表视图中使用该类的相同实例?如果是这样,我该怎么做?

4

2 回答 2

0

首先,所有读写属性都会自动合成实例变量(除非您同时实现了 setter 和 getter)。

其次,如果该信息对整个(或大部分)应用程序来说是全局的,那么单例正是您所需要的。您不需要将其保留为属性(或 ivar)。它是一个单例,它保持自己的指针。

如果您仍想使用属性,则必须将其传递给应用程序中的每个 VC(prepareForSegue:sender:可能如果您使用故事板)。

于 2013-03-15T06:40:51.173 回答
0

首先弄清楚你需要什么全局信息。然后找出你已经拥有的哪些对象的生命周期与该全局信息一致,哪些对象在逻辑上与该信息相关联。例如,如果您需要一个信息数组来“备份”一个 UITableView,请将指向该数组的指针存储在表视图数据源实例中。

很少需要创建“单例”,并且有很多单例通常是编程不佳的标志。

于 2013-03-19T11:36:58.107 回答