0

这真的很奇怪。我从我的视图中获取了一个 CGFloat 值并将其发送到我的 viewController,它会将它传递给我的音频引擎。但是,CGFloat 会在视图和视图控制器之间以某种方式进行修改。完全被难住了。

这是视图中的方法

-(void)mod:(CGFloat)value
{
    if(value < 0) value = 0.;
        if(value > self.bounds.size.width - 10)value =  self.bounds.size.width - 10.f;

            value =  value / (self.bounds.size.width - 10.f) ;
            NSLog(@"value %g", value);   ///prints a value between 0.0 - 1.0
            [viewController mod:value forVoice:voiceToPlay];
}

打印 0.0 - 1.0 之间的值

然后在我的 viewController 这个方法接收它...

-(void)mod:(CGFloat)value forVoice:(NSUInteger)voice
{
    NSLog(@"mod in view control %g", value);

    [audioController mod:value forVoice:voice];
}

这会打印出完全错误的数字,例如 1.0842e-19, 2, -2

这可能很简单,但我无法弄清楚它是什么!谢谢你的帮助。

4

2 回答 2

0

我是初学者,所以我不确定这一点,但是你真的可以改变方法的输入值并将其重新发送到另一个方法吗?您不应该在您的 mod: 方法中创建另一个 CGFloat,然后将该值发送到 viewController 吗?

于 2011-12-16T18:28:57.247 回答
0

我猜当你编译这个程序时,你会得到一些警告(除非你禁用它们)。修复它们,这将消失。

具体来说,确保 (a)mod: forVoice:在中声明viewController.h(并且声明与实现匹配),并且 (b)viewController.h在调用之前包含在您的视图的实现文件中。

于 2011-12-16T18:30:16.603 回答