2009-08-21 159 views
1

我确定这是简单的,但我现在一直在盯着它,我想我需要的只是一双新鲜的眼睛来看它,因为我的猫不会在iPhone编程方面我没有太多的经验,我已经转向了你。通过时参数丢失

我正在传递一个类型为float的变量从一个类(UIView)到另一个类(UIViewController)在变量被传递之前它的值是正确的,但是当它到达函数时它失去了它的值,它被显示为0或-2,我不知道为什么。就像我说我敢肯定这件事情简单,但我只需要一双崭新的眼睛来看待它

代码如下

//inside UIView 
-(void)UpdateFloat 
{ 
myFloat = myFloat + 0.01; 
} 



    -(void)RemoveView 
{ 
//Function Call 
[viewController myFunction:myFloat]; 
} 

//Function 
-(void)myFunction:(float)myFloat 
{ 
[myView removeFromSuperview]; 
[self.view addSubview:myOtherView]; 
[myOtherView anotherFunction:myFloat]; 

}

浮获得由定时更新,了UIView使得函数调用时,浮动的值是正确的(通常约15.67)

任何帮助,将不胜感激

预先感谢您, BWC

+0

我希望你不要得罪你的猫! – 2009-08-21 14:52:23

+0

显示调用myFuction(它周围的代码,以及如何分配浮动) – Daniel 2009-08-21 14:53:30

回答

1

如果你的浮点数真的是一个浮点数,我敢打赌还有别的东西正在其他地方操纵这个值,这不是消息发送。搜索每个出现的变量名称。

当你不小心在浮点数上进行整数运算时(这真的很容易),你会看到类似的东西。检查并确保你的浮点数是浮点数,所有的数学运算都是用浮点数来完成的,并且不会出现整数运算。

它也可能是一个范围相关的东西,而你得到一个不同的myFloat,很难说没有所有的可用来源。

+0

我错过了导致我的方法签名不被发现的导入语句,所以传入的变量失去了它的价值......我把它全部照顾的,感谢你的帮助 – BWC 2009-08-21 15:48:44

+0

这种有意义的,它可能会被视为(id)而不是(float)导致各种奇怪的事情发生,因为float不是一个类。 – slf 2009-08-21 17:13:04

0

嗯,我不明白你,因为你说你从UIView传递给UIViewController。但是在你的代码中,你首先调用UIViewController中的一个函数,顺便说一句,它必须是[self myFunction:myFloat],并且在那个函数中调用你的UIView。

+0

没有第一行代码是在我的UIView,我打电话给ViewController中的一个函数,然后viewController然后删除一个视图和添加另一个视图,然后在第二个视图中调用一个函数,并传递第一个视图给出的浮点数。但即使在它使这个调用浮动已经失去了它的价值 – BWC 2009-08-21 14:55:30

0

玉家伙,

我想我已经想通了,为什么浮子不保留它的价值,但原因也令我感到困惑。当我打电话了UIView Xcode中ViewControllers功能显示,没有方法的警告,如果没有匹配的签名方法将承担返回(ID),并通过“...”作为参数

我明白这个警告的手段,但我不明白的是,我已经在我的viewController的标题

-(void)myFunction:(float)myFloat; 

我也有一个调用功能视图控制器另一种观点认为声明的方法,它不显示那个警告......我很确定这是浮动不保留它的价值的原因,但我不'不知道为什么看不到方法签名

+0

我想出了家伙,我错过了我的导入声明......看到我知道这将是一件简单的事情 – BWC 2009-08-21 15:47:23