我有一類聲明如下的變量:屬性/此變量的返回值?
Entity *array[BOARD_SIZE][BOARD_SIZE];
我需要設置或者是@property,讓我訪問(讀取)的數組元素,或返回一個參考,所以我的函數可以訪問數組元素。
- (???) getEntityArray
{
return ???;
}
或
@property (????) Entity ??? ;
我真的需要用這種方式聲明數組工作。
有什麼建議嗎?
謝謝!
我有一類聲明如下的變量:屬性/此變量的返回值?
Entity *array[BOARD_SIZE][BOARD_SIZE];
我需要設置或者是@property,讓我訪問(讀取)的數組元素,或返回一個參考,所以我的函數可以訪問數組元素。
- (???) getEntityArray
{
return ???;
}
或
@property (????) Entity ??? ;
我真的需要用這種方式聲明數組工作。
有什麼建議嗎?
謝謝!
你可以做到以下幾點之一 - 使用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的一個實體的方法...
我肯定會做的方法來回報給你正是你所需要的對象,而不是移交數組指針,並讓其他對象弄亂它。
雖然Rob的回答是有效的,但問題本身很有趣。 Objective C只是標準C之上的一個層,所以關於返回數組類型的問題是有效的。
該問題的答案非常簡單:不可能在C中返回數組類型,只能返回指針。返回指針的問題是調用者不知道多維數組的維數,因此您不能將返回的值用作多維數組。
這不會編譯(即使將return語句更改爲「return x」並聲明類型爲EntityArrayPtr的變量x – 2009-09-09 06:22:18
這樣做!:-)請參閱已編輯的答案 – mahboudz 2009-09-09 06:34:02
還有一個問題是要分配的存儲空間整個EntityArray應該駐留在實例變量中,或者是否應該有一個指向存儲器的指針,稍後爲該數組使用而稍後插入。 – mahboudz 2009-09-09 06:43:49