Noob問題在這裏。從另一個類中調用浮點數組
如果我有一個數組浮點itemsPosition [20] [20]的類A,並且我有另一個類B來訪問它,我該怎麼做?
我最常做它的Alloc A類和其他對象,但在這種情況下訪問,我不能A類
任何想法內合成float數組?
Noob問題在這裏。從另一個類中調用浮點數組
如果我有一個數組浮點itemsPosition [20] [20]的類A,並且我有另一個類B來訪問它,我該怎麼做?
我最常做它的Alloc A類和其他對象,但在這種情況下訪問,我不能A類
任何想法內合成float數組?
你可以@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];
...
}
+1對你也是...... NSValues是一個非常優雅,非常客觀的C方式來解決這個問題。 –
從來不知道NSValues!大!將試試這個 –
這個工程!但是如果數組是[20] [10]呢? –
float是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);
}
}
}
Le請告訴我,將某個示例Xcode項目放在哪裏對我有用。
謝謝!我其實試過這個,但我返回itemsPosition而不是&itemsPosition。會試試這個! –
爲什麼你不能合成?如何使用setter? – brainray
我想因爲浮動不是物體 –