该变量的属性/返回值?

时间:2009-09-09 05:41:45

标签: iphone c objective-c cocoa

我在类中声明了这样的变量:

Entity *array[BOARD_SIZE][BOARD_SIZE];

我需要设置一个允许我访问(读取)数组元素的@property,或者一个返回引用的函数,以便我可以访问数组元素。

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

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

我真的需要处理以这种方式声明的数组。

有什么建议吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

不要这样做。使用NSArray存储Objective-C对象。

如果您想知道如何处理基元的多维数组,请查看此问题的答案:

Add 2d int array to NSDictionary

答案 1 :(得分: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中的一个实体......

我肯定会让方法完全返回你需要的对象,而不是传递一个数组指针,让其他一些对象乱七八糟。

答案 2 :(得分:0)

虽然Rob的回答是有效的,但问题本身很有趣。 Objective C只是标准C之上的一层,所以关于返回数组类型的问题是有效的。

问题的答案非常简单:无法在C中返回数组类型。您只能返回指针。返回指针的问题是调用者不知道多维数组的维度,因此不能将返回的值用作多维数组。