从另一个类调用float数组

时间:2012-10-01 03:49:05

标签: objective-c ios arrays class

Noob问题。

如果我有一个带有数组浮动itemsPosition [20] [20]的A类,并且我有另一个B类来访问它,我该怎么办?

我通常用它来分配A类和访问其他对象,但在这种情况下,我不能在A类中合成float数组。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

浮点数是C类型,因此您不能使用典型的Objective C属性来直接访问它们。

最好的办法是创建一个“访问器”函数,它允许B类访问第一个数组条目“itemsPosition”的指针。例如。 “itemsPosition[0][0]

在A班的.h文件中:

float itemsPosition[20][20];

- (float *) getItemsPosition;

并在.m文件中:

- (float *) getItemsPosition
{
    // return the location of the first item in the itemsPosition 
    // multidimensional array, a.k.a. itemsPosition[0][0]
    return( &itemsPosition[0][0] );
}

在B类中,由于你知道这个多维数组的大小是20 x 20,你可以很容易地步入下一个数组条目的位置:

    float * itemsPosition = [classA getItemsPosition];
    for(int index = 0; index < 20; index++)
    {
        // this takes us to to the start of itemPosition[index]
        float * itemsPositionAIndex = itemsPosition+(index*20);

        for( int index2 = 0; index2 < 20; index2++)
        {
            float aFloat = *(itemsPositionAIndex+index2);
            NSLog( @"float %d + %d is %4.2f", index, index2, aFloat);
        }
    }
}

让我知道在某个地方为您准备一个示例Xcode项目是否有用。

答案 1 :(得分:1)

你可以@synthesize NSValue拥有指向你阵列的指针。

@interface SomeObject : NSObject
@property (strong, nonatomic) NSValue *itemsPosition;
@end

@implementation SomeObject
@synthesize itemsPosition;
...
static float anArray[20][20];
...
- (void) someMethod
{
    ... add items to the array
    [self setItemsPosition:[NSValue valueWithPointer:anArray]];
}
@end

@implementation SomeOtherObject
...
- (void) someOtherMethod
{
    SomeObject *obj = [[SomeObject alloc] init];
    ...
    float (*ary2)[20] = (float(*)[20])[obj.itemsPosition pointerValue];
    ...
}