Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C静态法问题_Objective C - Fatal编程技术网

Objective c 目标C静态法问题

Objective c 目标C静态法问题,objective-c,Objective C,我有一个静态方法,它应该以两个对象和一个float作为参数。对象一切正常,但我的float变量丢失了。下面是一个测试用例: + (void) someFunctionWithSomething: (xmlNodePtr *) node { CGFloat fsize = 0; if (fsize == 0) { fsize = 15.0f; } NSLog (@"size1: %f", fsize); // output is 15.00000

我有一个静态方法,它应该以两个对象和一个float作为参数。对象一切正常,但我的float变量丢失了。下面是一个测试用例:

+ (void) someFunctionWithSomething: (xmlNodePtr *) node {
    CGFloat fsize = 0;
    if (fsize == 0) {
    fsize = 15.0f;
    }

    NSLog (@"size1: %f", fsize);    // output is 15.00000
    [MyClass getFontWithSize: fsize];
}

+ (void) getFontWithSize: (CGFloat) fsize {

    NSLog (@"size2: %f", fsize);    // output is 0.00000
}

为什么我的变量突然变为零?这可能与我从静态方法中调用静态方法有关吗?我有一种感觉,这是我在这里错过的一件非常简单的事情。想法?

检查头文件是否具有与您的定义相匹配的
getFontWithSize
原型:

 +(void) getFontWithSize: (CGFloat) fsize;

可能您有不同的地方。

这是导致错误的实际代码吗?因为你说你有一个接受两个对象和一个浮点数的方法,但是你提供了一个只接受一个对象而不接受浮点数的方法。我想你可能还想阅读一下现有的问题。:-)@middaparka,谢谢你的指针:)@Philipp Jaquet,这是无关的,正如我在问题中提到的,这段代码再现了这个问题。无论如何,我已经有了我的答案。关于术语的一点:这些不是静态方法,它们是类方法。谢谢,就是这样。我不知道跳过标题定义会产生如此灾难性的后果。谢谢您的回答:)@Shade:您之前忽略的警告是“假定具有未定义签名的方法返回id并将…作为参数”?这很重要:这意味着代码将查看指针寄存器(而不是浮点寄存器)的输入,并将其解释为指针。@Graham Lee,我明白了。问题是,我是Obj-C的初学者,正在处理一个非常大的项目(185个类),其中有500多个编译警告。大部分代码不是我的,我已经不再注意警告了。@Shade:没问题!很高兴这有帮助。这不是一个目标特定的问题。我认为同样的事情会发生在良好的老平原C.C++对这些事情更严格…