CGFloat或CGFloat*?

Dvi*_*evy 0 xcode cocoa-touch objective-c uifont ios

我收到一个错误,我不明白如何解决.错误是:

Sending 'CGFloat' (aka 'float') to parameter of incompatible type 'CGFloat *' (aka 'float *'); 
Run Code Online (Sandbox Code Playgroud)

对于线路:

[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];
Run Code Online (Sandbox Code Playgroud)

错误指向actualFontSize:myFont.pointSize.myFont是一个UIFont.我这样设置:UIFont *myFont = [UIFont systemFontOfSize:17.0];

这个错误意味着什么,以及如何修复它的想法?

Tho*_*ing 5

来自文档:

actualFontSize输入时,指向浮点值的指针.返回时,此值包含用于呈现字符串的实际字体大小.

这意味着您必须通过引用变量来传入指针.为此,请使用"&"运算符&

例:

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);
Run Code Online (Sandbox Code Playgroud)

drawAtPoint:将设置outSize指向的值,以便您可以打印结果.这里的原因是,你只能通过return语句在C中返回1个值.要获得多个结果,您可以传入指针以允许该方法设置其他结果.