菜鸟问题在这里。
如果我有一个带有数组 float itemsPosition[20][20] 的 A 类并且我有另一个 B 类可以访问它,我该怎么做?
我通常这样做是为了分配 A 类并访问其他对象,但在这种情况下,我无法在 A 类中合成浮点数组。
有任何想法吗?
菜鸟问题在这里。
如果我有一个带有数组 float itemsPosition[20][20] 的 A 类并且我有另一个 B 类可以访问它,我该怎么做?
我通常这样做是为了分配 A 类并访问其他对象,但在这种情况下,我无法在 A 类中合成浮点数组。
有任何想法吗?
浮点数是 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 项目是否对我有用。
您可以保存指向您的数组的指针@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];
...
}