2011-09-02 125 views
0

我正在製作一個非常簡單的遊戲,但我無法決定如何存儲我的自定義類將使用的變量。我只知道兩種方法可以做到這一點,但其他人似乎對你放置某些東西的位置有規定。我想知道應該如何有效地存儲我正在使用的變量,並且我希望能夠在這裏得到答案。存儲類變量的最佳方法是什麼?

基本上,這是我的頭文件。

#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

這並不完全清楚,但我會試一試。請原諒我,如果我不在這裏的正確球場。從我能夠從問題分析,您的問題基本上可以歸結爲兩個選項:

  1. 全球詞典:全球字典中存儲的所有庫存鍵控庫存視圖(5個的每一個實例 - 20個實例)或...
  2. 將數據作用於實例視圖:對於清單視圖的每個實例,都有一個清單數據對象。

除非您有理由需要全局訪問,否則我會建議使用每個視圖的實例數據。我總是從數據本地化到需要它的數據開始,然後回到製作全球數據(如果需要的話)。如果數據確實需要在視圖之間共享,我會創建一個模型並考慮使用單例模式來訪問模型(InventoryModel * inv = [InventoryModel sharedInstance])。搜索singleton objective-c。

但再一次,除非有需要,否則我會將數據本地化到對該數據進行操作的視圖。全局和共享數據總是會使數據的生命週期和可能的同步變得複雜。

+0

謝謝。你釘了它。不幸的是,由於遊戲設置的方式,我需要通過許多不同的對象訪問數據,並且需要訪問許多其他對象。如果你認爲它是蜘蛛網的一部分,它應該更有意義。我想我可以重新工作,與應用程序一起工作。謝謝您的幫助。 – Justin

相關問題