我正在制作一个非常简单的游戏,但我无法决定如何存储我的自定义类将使用的变量。我只知道有两种方法可以做到这一点,但其他人似乎对你放置某些东西的地方有规定。我想知道如何有效地存储我正在使用的变量,我希望我能在这里得到答案。
基本上,这是我的头文件。
#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
那是使用我之前谈论的第一种方法。第二种方法涉及在NSDictionary
和#import
声明之间使用单个@interface
,它们只是将每个对象的数据存储在一个键中。上面使用的方法听起来更容易和有效。
请记住,我将使用此类型的五到二十个对象。我的最后一点:URWInventoryView
是我的另一个自定义类,它基于UIView。
答案 0 :(得分:1)
目前还不完全清楚但是我会对它进行一次拍摄。如果我不在这里的正确球场,请原谅我。从我能够解析的问题来看,你的问题基本上归结为两个选择:
除非您需要全局访问的原因,否则我建议您在每个视图中使用实例数据。我总是首先将数据本地化为需要它的数据,然后再根据需要制作全局数据。如果确实需要在视图之间共享数据,我将创建一个模型并考虑单例模式来访问模型(InventoryModel * inv = [InventoryModel sharedInstance])。搜索singleton objective-c。
但是,除非有需要,否则我会将数据本地化到对该数据进行操作的视图中。全局和共享数据总是会使数据的生命周期复杂化并且可能同步。