1. Quick question today. Is this the proper way to "unhook" the OnUpdate() function:

    frame:SetScript("OnUpdate", nil)

    Well, there is no hook, which would have been done with HookScript() instead of SetScript(). You can use SetScript("OnUpdate", nil) to clear the currently set OnUpdate script, but you cannot ever 'unhook' a script that was set with HookScript(). So without a more precise question, it is difficult for me to say =)

    Ok, I see. To be more specific, I had first done frame:SetScript("OnUpdate", foo).

    Seems that SetScript would be preferable to HookScript for my purposes, since I only want to monitor OnUpdate intermittently, in response to user action.

    Then yes, if it is a frame you control, you can use SetScript(). If you're using this on another frame (Blizzard's, for example) you should not. 'Disabling' your script in that case is slightly more work, but still possible.

    In the simple case, what you have works perfectly!