2009-09-09 52 views
1

我有一類聲明如下的變量:屬性/此變量的返回值?

Entity *array[BOARD_SIZE][BOARD_SIZE]; 

我需要設置或者是@property,讓我訪問(讀取)的數組元素,或返回一個參考,所以我的函數可以訪問數組元素。

- (???) getEntityArray 
{ 
    return ???; 
} 

@property (????) Entity ??? ; 

我真的需要用這種方式聲明數組工作。

有什麼建議嗎?

謝謝!

回答

4

不要這樣做。使用NSArray來存儲Objective-C對象。

看一看在這個問題的答案,如果你想知道如何處理原語的多維數組:

Add 2d int array to NSDictionary

0

你可以做到以下幾點之一 - 使用typedef使它更容易處理或不。

在.h文件中

#define BOARD_SIZE 32 
typedef NSString *EntityArrayPtr[BOARD_SIZE][BOARD_SIZE]; 

@interface EntityTestWithNSString : NSObject { 
    EntityArrayPtr *x; 
    NSString *tempStrs[15][15]; 
} 

@property NSString **tempStrs; 
@end 

在.m文件:

- (EntityArrayPtr *) getEntityArray 
{ 
    return x; 
} 

- (NSString **) getStringArrays 
{ 
    return &tempStrs[0][0]; 
} 

我剛剛編譯這個和它的編譯。我會留給你看看哪個最適合你的情況。

你可以做的是抓住你在你需要的index1.index2的一個實體的方法...

我肯定會做的方法來回報給你正是你所需要的對象,而不是移交數組指針,並讓其他對象弄亂它。

+0

這不會編譯(即使將return語句更改爲「return x」並聲明類型爲EntityArrayPtr的變量x – 2009-09-09 06:22:18

+0

這樣做!:-)請參閱已編輯的答案 – mahboudz 2009-09-09 06:34:02

+0

還有一個問題是要分配的存儲空間整個EntityArray應該駐留在實例變量中,或者是否應該有一個指向存儲器的指針,稍後爲該數組使用而稍後插入。 – mahboudz 2009-09-09 06:43:49

0

雖然Rob的回答是有效的,但問題本身很有趣。 Objective C只是標準C之上的一個層,所以關於返回數組類型的問題是有效的。

該問題的答案非常簡單:不可能在C中返回數組類型,只能返回指針。返回指針的問題是調用者不知道多維數組的維數,因此您不能將返回的值用作多維數組。