Почему этот метод вызывается дважды? - PullRequest
2 голосов
/ 16 февраля 2011

В следующей строке кода дважды вызывался метод currentPlaybackTime в моем синглтон-классе MAMusicPlayer:

float trackPosition = MAX(floor([[MAMusicPlayer sharedPlayer] currentPlaybackTime]),0.0f);
[scrubber setValue:trackPosition];

Путем проб и ошибок мне удалось решить проблему, настроив код так:1006 *

float trackPosition  = floor([[MAMusicPlayer sharedPlayer] currentTrackPosition]);
[scrubber setValue:MAX(trackPosition,0.0f)];

Однако я до сих пор не понимаю, почему в первом примере метод должен вызываться дважды.Поскольку это, вероятно, довольно фундаментально, я подумал, что лучше попросить разъяснений.

1 Ответ

7 голосов
/ 16 февраля 2011

MAX(a, b), вероятно, является макросом, определенным как ((a > b) ? a : b), поэтому при замене терминов на a и b каждый член оценивается дважды.

...