테이블 높이를 부동 상태로 유지하려고합니다. 이렇게 좋은 수업을 발견했습니다 : http://forums.macnn.com/t/224809/nsmutablearray-vs-a-plain-c-array-for-storing-floats.Objective-C에서 C 함수를 호출하면 값이 전달되지 않습니다.
문제는 다른 파일에있는 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
내가 올바른 값이 실제로 플로트에 삽입되어 있는지 확인 수있는 방법 []?
정확히 게시 한 코드를 시도하고'CGFloat returnHeight = 120.f; AddFloatToArray (height, returnHeight);와 내 Xcode의 매력처럼 작동합니다. 여기에서 c/p 할 때 코드에서 아무 것도 제거하지 않았습니까? – AliSoftware
모든 것이 있습니다. 아마도 C 함수가 다른 파일에 있다고 언급 할 가치가 있습니다. – MishieMoo