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“泄漏”的主要内容,如果未能解决你的问题,请参考以下文章