存储类变量的最佳方法?

时间:2011-09-02 20:52:09

标签: iphone objective-c nsobject

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

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

#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。

1 个答案:

答案 0 :(得分:1)

目前还不完全清楚但是我会对它进行一次拍摄。如果我不在这里的正确球场,请原谅我。从我能够解析的问题来看,你的问题基本上归结为两个选择:

  1. 全球词典:全局词典存储为每个广告资源视图实例键入的所有广告资源(5 - 20个实例)或...
  2. 数据范围到视图实例:对于广告资源视图的每个实例,都有一个广告资源数据对象。
  3. 除非您需要全局访问的原因,否则我建议您在每个视图中使用实例数据。我总是首先将数据本地化为需要它的数据,然后再根据需要制作全局数据。如果确实需要在视图之间共享数据,我将创建一个模型并考虑单例模式来访问模型(InventoryModel * inv = [InventoryModel sharedInstance])。搜索singleton objective-c。

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