I've a HUD prefab with a default disabled gameObject inside. But something enable it on start unexpectedly.
That took me hours to check and finally the problem is UIFollowTarget.SetVisible call NGUITools.SetActive() for every prefab's child.
It's hard to say that's a bug because it's designed to work this way.
A break-point based check function can avoid this problem but it may not necessary in most cases.
Report it here in case someone meet the same problem so he can save time.