我正在创造一个简单的鼓机。此功能控制每个播放样本之间的时间(从而控制鼓机的速度)。我需要用滑块来控制速度,所以我希望能够控制到下一步的持续时间。如果可能的话,用这个值。然而,当我试图这样做时,它告诉我"时间是NSDate的一部分"
-(void)run
{
@autoreleasepool
{
// get current time
NSDate* time = [NSDate date];
// keeping going around the while loop if the sequencer is running
while (self.running)
{
// sleep until the next step is due
[NSThread sleepUntilDate:time];
// update step
int step = self.step + 1;
// wrap around if we reached NUMSTEPS
if (step >= NUMSTEPS)
step = 0;
// store
self.step = step;
// time duration until next step
time = [time dateByAddingTimeInterval:0.5];
}
// exit thread
[NSThread exit];
}
}
这告诉我NSTimeInterval是一个不可复制的类型
// time duration until next step
time = [time dateByAddingTimeInterval: self.tempoControls];
这是声明滑块的位置
的.m
- (IBAction)sliderMoved:(UISlider *)sender
{
AppDelegate* app = [[UIApplication sharedApplication] delegate];
if (sender == self.tempoSlider)
{
PAEControl* tempoControl = app.tempoControls[app.editIndex];
tempoControl.value = self.tempoSlider.value;
}
}
·H
@interface DetailController : UIViewController
@property (weak, nonatomic) IBOutlet UISlider *tempoSlider;
- (IBAction)sliderMoved:(UISlider *)sender;
任何帮助都会让我非常感激,提前谢谢。
答案 0 :(得分:1)
self.tempoControls 似乎是 PAEControl 对象的数组。名为 dateByAddingTimeInterval:的方法需要一个类型为 NSTimeInterval 的参数( aka double )。看起来你正试图传入这个数组。
尝试更改此行 -
time = [time dateByAddingTimeInterval: self.tempoControls];
也许这个 -
PAEControl* tempoControl = self.tempoControls[self.editIndex];
time = [time dateByAddingTimeInterval: (NSTimeInterval)tempoControl.value];
另一方面,如果这一切都在主线程上运行,请注意您正在阻止它,并且UI将变得非常无响应。