存储类变量的最佳方法是什么?

问题描述:

我正在制作一个非常简单的游戏,但我无法决定如何存储我的自定义类将使用的变量。我只知道两种方法可以做到这一点,但其他人似乎对你放置某些东西的位置有规定。我想知道应该如何有效地存储我正在使用的变量,并且我希望能够在这里得到答案。存储类变量的最佳方法是什么?

基本上,这是我的头文件。

#import <Foundation/Foundation.h> 
#import "URWInventoryView.h" 

@interface RWInventory : NSObject { 
    URWInventoryView *inventoryWindow; 

    BOOL slotIsOccupied[5][5]; 

    int numberOfSlots; 
    int numberOfSlotsFilled; 
    int numberOfColumns; 
    int numberOfRows; 
} 

// 
//// 
//// Initializers 
//// 
// 

- (id) initWithSlots:(int)slots; 
- (id) initWithColumns:(int)columns andRows:(int)rows; 
- (id) initWithInventoryData:(RWInventory*)inventory; 

// 
//// 
//// Setters 
//// 
// 

- (void) setSlots:(int)slots; 
- (void) setColumns:(int)columns; 
- (void) setRows:(int)rows; 

- (void) setSlotIsOccupiedColumn:(int)column andRow:(int) row; 
- (void) moveItemAtColumn:(int)column andRow:(int)row toColumn:(int)newColumn andRow:(int)newRow; 

// 
//// 
//// Getters 
//// 
// 

- (int) slots; 
- (int) columns; 
- (int) rows; 

- (BOOL) slotIsOccupiedColumn:(int)column andRow:(int)row; 

@end 

这使用了我之前谈过的第一种方法。第二种方法涉及在#import@interface声明之间使用单个NSDictionary,并且它们只是将每个对象的数据存储在一个密钥中。上面使用的方法对我来说听起来更容易和高效。

请记住,我将使用这种类型的五到二十个物体之间的任何地方。我的最后一个注释:URWInventoryView是另一个我的自定义类,它基于UIView。

+1

坦率地说,我不完全明白你在问什么。首先你的代码不显示类变量。它显示了接口中的公共实例变量。 –

这并不完全清楚,但我会试一试。请原谅我,如果我不在这里的正确球场。从我能够从问题分析,您的问题基本上可以归结为两个选项:

  1. 全球词典:全球字典中存储的所有库存键控库存视图(5个的每一个实例 - 20个实例)或...
  2. 将数据作用于实例视图:对于清单视图的每个实例,都有一个清单数据对象。

除非您有理由需要全局访问,否则我会建议使用每个视图的实例数据。我总是从数据本地化到需要它的数据开始,然后回到制作全球数据(如果需要的话)。如果数据确实需要在视图之间共享,我会创建一个模型并考虑使用单例模式来访问模型(InventoryModel * inv = [InventoryModel sharedInstance])。搜索singleton objective-c。

但再一次,除非有需要,否则我会将数据本地化到对该数据进行操作的视图。全局和共享数据总是会使数据的生命周期和可能的同步变得复杂。

+0

谢谢。你钉了它。不幸的是,由于游戏设置的方式,我需要通过许多不同的对象访问数据,并且需要访问许多其他对象。如果你认为它是蜘蛛网的一部分,它应该更有意义。我想我可以重新工作,与应用程序一起工作。谢谢您的帮助。 – Justin