以下代码行在我的单身currentPlaybackTime
课程中调用MAMusicPlayer
方法两次:
float trackPosition = MAX(floor([[MAMusicPlayer sharedPlayer] currentPlaybackTime]),0.0f);
[scrubber setValue:trackPosition];
通过反复试验,我设法通过将代码调整为:
来解决问题float trackPosition = floor([[MAMusicPlayer sharedPlayer] currentTrackPosition]);
[scrubber setValue:MAX(trackPosition,0.0f)];
但是我仍然不明白为什么第一个例子应该调用该方法两次。由于这可能是相当基础的,我认为最好要求澄清。
答案 0 :(得分:7)
MAX(a, b)
可能是定义为((a > b) ? a : b)
的宏,因此当术语替换a
和b
时,每个术语都会被评估两次。