Noob问题。
如果我有一个带有数组浮动itemsPosition [20] [20]的A类,并且我有另一个B类来访问它,我该怎么办?
我通常用它来分配A类和访问其他对象,但在这种情况下,我不能在A类中合成float数组。
有什么想法吗?
答案 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];
...
}