存储类变量的最佳方法是什么?
我正在制作一个非常简单的游戏,但我无法决定如何存储我的自定义类将使用的变量。我只知道两种方法可以做到这一点,但其他人似乎对你放置某些东西的位置有规定。我想知道应该如何有效地存储我正在使用的变量,并且我希望能够在这里得到答案。存储类变量的最佳方法是什么?
基本上,这是我的头文件。
#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。
这并不完全清楚,但我会试一试。请原谅我,如果我不在这里的正确球场。从我能够从问题分析,您的问题基本上可以归结为两个选项:
- 全球词典:全球字典中存储的所有库存键控库存视图(5个的每一个实例 - 20个实例)或...
- 将数据作用于实例视图:对于清单视图的每个实例,都有一个清单数据对象。
除非您有理由需要全局访问,否则我会建议使用每个视图的实例数据。我总是从数据本地化到需要它的数据开始,然后回到制作全球数据(如果需要的话)。如果数据确实需要在视图之间共享,我会创建一个模型并考虑使用单例模式来访问模型(InventoryModel * inv = [InventoryModel sharedInstance])。搜索singleton objective-c。
但再一次,除非有需要,否则我会将数据本地化到对该数据进行操作的视图。全局和共享数据总是会使数据的生命周期和可能的同步变得复杂。
谢谢。你钉了它。不幸的是,由于游戏设置的方式,我需要通过许多不同的对象访问数据,并且需要访问许多其他对象。如果你认为它是蜘蛛网的一部分,它应该更有意义。我想我可以重新工作,与应用程序一起工作。谢谢您的帮助。 – Justin
坦率地说,我不完全明白你在问什么。首先你的代码不显示类变量。它显示了接口中的公共实例变量。 –