我收到一个错误,我不知道如何修复。错误是:
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];
这个错误意味着什么,以及如何修复它的任何想法?
发布于 2012-06-20 05:55:57
从docs
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);drawAtPoint:将设置outSize指向的值,这样您就可以打印结果。这里的原因是,您只能通过return语句在C中返回1个值。要获得多个结果,可以传入指针以允许该方法设置其他结果。
发布于 2012-06-20 05:56:17
actualFontSize参数应该是您传入的CGFloat的地址。如果该方法使用不同的字体大小,它将更改您传递的值,这就是您需要传递地址而不是值的原因。换句话说,您通过引用传递actualFontSize,以便该方法可以根据需要对其进行更新。
https://stackoverflow.com/questions/11109984
复制相似问题