为什么这个方法被调用两次?

时间:2011-02-16 18:54:01

标签: objective-c c cocoa

以下代码行在我的单身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)];

但是我仍然不明白为什么第一个例子应该调用该方法两次。由于这可能是相当基础的,我认为最好要求澄清。

1 个答案:

答案 0 :(得分:7)

MAX(a, b)可能是定义为((a > b) ? a : b)的宏,因此当术语替换ab时,每个术语都会被评估两次。