【问题标题】:Wrapper for CGFloat ErrorCGFloat 错误的包装器
【发布时间】:2015-07-31 12:54:02
【问题描述】:

在我的 CGFloat 包装器中,我收到错误 Returning CGFloat (aka Double) from a function result type CGfloat aka double take the address with &

+(CGFloat*)pointData;

//

+(CGFloat *)pointData{


    NSInteger savedInt = [[NSUserDefaults standardUserDefaults] integerForKey:@"savedPointForText"];
    CGFloat textPoint = (CGFloat)savedInt;

    if(textPoint <1) {

        textPoint = 18.0;
    }


    return textPoint;
}

如果我这样做return &amp;textPoint;,我会收到一个警告,即返回带有局部变量“textpoint”的堆栈内存地址

【问题讨论】:

  • +(CGFloat)pointData; 没有“*”?
  • 是的,谢谢

标签: ios objective-c cgfloat


【解决方案1】:

在这种情况下,您可以只返回 CGFloat 本身,如果您将签名更改为:

+ (CGFloat)pointData {

您需要CGFloat * 以防您不想返回变量(可能是因为您实际上需要操作多个变量):

+ (void)changePointData:(CGFloat *)pointData {
    NSInteger savedInt = [[NSUserDefaults standardUserDefaults] integerForKey:@"savedPointForText"];
    *pointData = (CGFloat)savedInt;

    if (*pointData < 1) {    
        *pointData = 18.0;
    }
}

【讨论】:

  • 抱歉 - 忘记更改参数名称。这是一个非常有用的模式。
【解决方案2】:

你可以试试

+(CGFloat)pointData{

    //Your code
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多