使用delegate代替原来的事件监听，大幅提升性能。