audio.PlayOneShot() not responding consistently on iPhone builds

I have a click sound that plays when you touch a button, and this works perfectly in Unity. However, on and iPod it only emits sounds sporadically. I'll touch a button once and it will click, then come back to the scene in a minute and it won't click. I've been unable to find a consistent cause.

Anyways, I'm using a very small .wav file, and here is my code:

var clickSound : AudioClip;

function OnGUI()
{
    if(GUI.Button ( ) )
    {
        PlayAudio();
        Application.LoadLevel("nextLevel");
    }
}

function PlayAudio()
{
    audio.PlayOneShot(clickSound);
    yield WaitForSeconds(.5);
}

@script RequireComponent(AudioSource)

The problem turned out to be that the OnGUI function was loading the next level before the AudioClip had a chance to play. I guess the 'yield WaitForSeconds' was only affecting the PlayAudio() function. By moving the Application.LoadLevel to a place below the yield in PlayAudio(), the audio had sufficient time to play. I'm not sure why this wasn't an issue in the Unity Editor, but it fixed the problem on iPhone play.