UISlider setValue“泄漏”

Posted

技术标签:

【中文标题】UISlider setValue“泄漏”【英文标题】:UISlider setValue "Leaking" 【发布时间】:2009-07-19 17:09:07 【问题描述】:

嘿希望有人能帮忙,因为我对此束手无策!?

我有一个 UISlider。我希望它随着任务的进行而移动(播放音乐)。

我在继续事件发生时设置它的值。 (通过轨道进展)

-(void)updateSlider:(float)value 
    NSLog(@" %f ",value);
    [timeIndexSlider setValue: value animated:YES];

记录浮点值正常的状态..

但它只是不动,我得到没有自动释放池 - 只是泄漏消息,你会从控制台中没有一个线程的线程中得到。我没有涉及任何线程。

经常更新 UISlider 有问题吗?

还有其他控制滑块移动的方法吗?

干杯

【问题讨论】:

从哪里调用updateSlider 方法?在方法中设置断点并在调试器中查看该方法是否从意外的地方(CoreAudio 线程?)调用。 调试器中的调用没有任何意外 其余代码是什么样的?您是否可能处于某种 while(music_not_done) 循环中,您没有返回并让消息得到处理?如果您没有使用计时器来更新滑块,那可能是您的问题。 我在想,一定是因为主线程被阻塞了,但只有这个滑块受到影响,播放代码在库中对我隐藏,一定有某个线程在某个地方进行或者“只是泄漏”的消息不会在那里。或者这可能是其他原因? 【参考方案1】:

我认为您正在另一个线程上获取更新,然后在该线程上调用 UIKit。

尝试使用执行更新的新方法执行 performSelectorOnMainThread(可能采用 NSNumber 对象)。

【讨论】:

仍然会泄漏传递给执行选择器的对象【参考方案2】:

您是否保留对 UISlider 的引用?如果没有,您可以在 nil 引用上调用 -setValue:animated:。 Objective-C 将允许这样做,而无需实际执行该方法。

这可能解释了为什么您将正确的浮点值传递给函数,但没有得到任何更新...

按照建议设置断点,并确保 UISlider 引用不为零。

如果没有,请尝试发布一些代码以便我们查看。

告诉我们进展如何,

汤姆

【讨论】:

没有滑块...我添加了 NSLog(@" %f",timeIndexSlider.value);调用后,值是正确的!...只是没有在视觉上改变显示。

以上是关于UISlider setValue“泄漏”的主要内容,如果未能解决你的问题,请参考以下文章

QProgressDialog::setValue 产生随机堆栈溢出

UISlider 不是每毫秒都流畅地滴答作响

在 Swift 中自动移动 UISlider

以编程方式滑动 UISlider

UISlider在iOS7中没有动画

在iphone的post请求中发送json数据