我无法将 C 数组声明为 Objective-C 属性(您知道 @property 和 @synthesize,因此我可以使用点语法)......它只是一个 3 维 int 数组......
问问题
855 次
1 回答
5
你不能——数组不是 C 中的左值。你必须声明一个指针属性,并依赖使用正确数组边界的代码,或者改用NSArray
属性。
例子:
@interface SomeClass
{
int width, height, depth;
int ***array;
}
- (void) initWithWidth:(int)width withHeight:(int)height withDepth:(int)depth;
- (void) dealloc;
@property(nonatomic, readonly) array;
@end
@implementation SomeClass
@synthesize array;
- (void) initWithWidth:(int)width withHeight:(int)height withDepth:(int)depth
{
self->width = width;
self->height = height;
self->depth = depth;
array = malloc(width * sizeof(int **));
for(int i = 0; i < width; i++)
{
array[i] = malloc(height * sizeof(int *));
for(int j = 0; j < height; j++)
array[i][j] = malloc(depth * sizeof(int));
}
}
- (void) dealloc
{
for(int i = 0; i < width; i++)
{
for(int j = 0; j < height; j++)
free(array[i][j]);
free(array[i]);
}
free(array);
}
@end
然后,您可以将该array
属性用作 3 维数组。
于 2009-10-11T04:25:18.593 回答