0

テーブル行の高さの float[] を保持しようとしています。ここでそうするための素晴らしいクラスを見つけました: http://forums.macnn.com/t/224809/nsmutablearray-vs-a-plain-c-array-for-storing-floats

問題は、(別のファイルにある) C 関数が呼び出されると、渡した float が 0 になることです。これは、float 値に関係なく、毎回発生します。

C 関数:

typedef struct
{
    float *array;
    int count;
} floatArray;

BOOL AddFloatToArray ( floatArray *farray, float newFloat )
{
    if ( farray->count > 0 )
    {
        // The array is already allocated, just enlarge it by one
        farray->array = realloc ( farray->array, ((farray->count + 1) * sizeof (float)) );

        // If there was an error, return NO
        if (farray->array == NULL)
            return NO;
    }
    else
    {
        // Allocate new array with the capacity for one float
        farray->array = (float *)malloc ( sizeof (float) );

        // If there was an error, return NO
        if (farray->array == NULL)
            return NO;
    }
    printf("Adding float to array %f\n", newFloat);
    farray->array[farray->count] = newFloat;
    farray->count += 1;
    printArrayContents(farray);
    return YES;
}

int printArrayContents( floatArray* farray)
{
    printf("Printing array contents\n");
    for(int j=0; j < farray->count; j++)
        printf("%f\n", farray->array[j]);


    return 0;
}

呼び出し元:

    NSDictionary* review = [self.reviews objectAtIndex:indexPath.row];
    returnHeight = [ReviewCell cellHeightForReview:review];
    NSLog(@"Adding height to array: %0.0f", returnHeight);
    AddFloatToArray(heights, returnHeight);

ログに記録される内容は次のとおりです。

2012-09-28 11:46:12.787 iOS-app[1605:c07] -[ProductDetailViewController tableView:heightForRowAtIndexPath:] [Line 598] Adding height to array: 101
Adding float to array 0.000000
Printing array contents
0.000000
2012-09-28 11:46:12.788 iOS-app[1605:c07] -[ProductDetailViewController tableView:heightForRowAtIndexPath:] [Line 598] Adding height to array: 138
Adding float to array 0.000000
Printing array contents
0.000000
0.000000
2012-09-28 11:46:12.788 iOS-app[1605:c07] -[ProductDetailViewController tableView:heightForRowAtIndexPath:] [Line 598] Adding height to array: 122
Adding float to array 0.000000
Printing array contents
0.000000
0.000000
0.000000
2012-09-28 11:46:12.789 iOS-app[1605:c07] -[ProductDetailViewController tableView:heightForRowAtIndexPath:] [Line 598] Adding height to array: 139
Adding float to array 0.000000
Printing array contents
0.000000
0.000000
0.000000

float[] に正しい値が実際に挿入されていることを確認するにはどうすればよいですか?

4

1 に答える 1

2

#import していた .h で関数を宣言しませんでした。すべてがコンパイルされて実行されましたが、クラスは正しく通信していませんでした。警告またはエラーが発生すると思うでしょう。

于 2012-09-28T20:15:07.903 に答える