首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGFloat还是CGFloat *?

CGFloat还是CGFloat *?
EN

Stack Overflow用户
提问于 2012-06-20 05:49:03
回答 2查看 8.8K关注 0票数 1

我收到一个错误,我不知道如何修复。错误是:

代码语言:javascript
复制
Sending 'CGFloat' (aka 'float') to parameter of incompatible type 'CGFloat *' (aka 'float *'); 

对于线路:

代码语言:javascript
复制
[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.pointSizemyFont是一个UIFont。我是这样设置的:UIFont *myFont = [UIFont systemFontOfSize:17.0];

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 05:55:57

docs

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

这意味着你必须通过引用变量来传递一个指针。要执行此操作,请使用与符号运算符&

示例:

代码语言:javascript
复制
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个值。要获得多个结果,可以传入指针以允许该方法设置其他结果。

票数 7
EN

Stack Overflow用户

发布于 2012-06-20 05:56:17

actualFontSize参数应该是您传入的CGFloat的地址。如果该方法使用不同的字体大小,它将更改您传递的值,这就是您需要传递地址而不是值的原因。换句话说,您通过引用传递actualFontSize,以便该方法可以根据需要对其进行更新。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11109984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档