2012-06-19 4 views
0

Я получаю сообщение об ошибке, которое я не понимаю, как исправить. Ошибка:CGFloat или CGFloat *?

Sending 'CGFloat' (aka 'float') to parameter of incompatible type 'CGFloat *' (aka 'float *'); 

Для линии:

[xlabel.text drawAtPoint:CGPointMake(labelRect.origin.x, labelRect.origin.y) 
       forWidth:labelRect.size.width 
       withFont:myFont 
      minFontSize:5.0 
      actualFontSize:myFont.pointSize 
      lineBreakMode:UILineBreakModeWordWrap 
     baselineAdjustment:UIBaselineAdjustmentAlignCenters]; 

точки ошибок в actualFontSize:myFont.pointSize. myFont - UIFont. Я установил его так: UIFont *myFont = [UIFont systemFontOfSize:17.0];

Что означает эта ошибка и какие-либо идеи о том, как ее исправить?

ответ

5

От docs:

actualFontSize На входе, указатель на значение с плавающей точкой. В поле return это значение содержит фактический размер шрифта, который использовался для .

Это означает, что вы должны передать указатель, указав переменную. Для этого используется оператор амперсанд &

Пример:

CGFloat outSize = 0; 
[xlabel.text drawAtPoint:CGPointMake(labelRect.origin.x, labelRect.origin.y) 
       forWidth:labelRect.size.width 
       withFont:myFont 
      minFontSize:5.0 
      actualFontSize:&outSize 
      lineBreakMode:UILineBreakModeWordWrap 
     baselineAdjustment:UIBaselineAdjustmentAlignCenters]; 
NSLog(@"%f", outSize); 

drawAtPoint: значение будет установлено, что негабаритные указывает и таким образом Вы можете распечатать результат. Причина этого заключается в том, что вы можете вернуть только 1 значение в C через оператор return. Чтобы получить несколько результатов, вы можете передать указатели, чтобы позволить методу устанавливать дополнительные результаты.

3

Параметр actualFontSize должен быть адресом CGFloat, в который вы проходите. Если метод использует другой размер шрифта, он изменит значение, которое вы передадите, поэтому вам необходимо передать адрес вместо значения. Другими словами, вы передаете actualFontSize по ссылке, чтобы метод мог обновлять его по мере необходимости.