關於事件偵聽和拋發
阿新 • • 發佈:2019-08-06
今天就至今進入主題吧!
一共兩件事:第一是在降低耦合度中偵聽和拋發中函式執行的順序,第二就是為什麼要先偵聽再拋發
1、事件物件中函式的執行順序:
在偵聽的事件函式中如果想要先執行這句話就要將這句話寫在拋發事件之前
2、為什麼要先新增事件偵聽,再拋發?
在物件事件中,因為在這裡的事件是自己定義的,屬於私有,拋發的時候這個事件還沒有創建出來,這個時候就涉及到執行先後順序的問題了,因為呼叫的是物件方法,所以呼叫的時候要有先後順序;在普通函式事件中;也是要先偵聽再拋發,雖然函式都是儲存在堆中,但是在儲存函式中也是有順序的,如果先傳入一個自定義事件,但是該事件在這個時候還沒有寫入函式,也不會顯示結果。
1、事件函式:
這個是沒有結果的:
當寫在拋發事件之後就會先執行拋發事件,誰接收了這個拋發事件(也就是說誰添加了這個事件偵聽)就執行誰,在這裡將事件evyt拋發出去,將flyy這個型別以引數形式被evt帶出去了,這個時候在obj2.init中接受了這個事件,繼續執行新增的偵聽函式,所以會先執行"我先列印"這句話;繼而回到obj2.init中繼續執行自定義一個事件evt,將fly這個型別以引數形式,拋發出去,這個時候就回到了obj1.init中接受了這個事件,繼續執行函式中最後一句語句,打印出“我後列印”
這個是正確的開啟方式: 2、普通函式: 這個是沒有結果的
這個才是正確開啟方式:
&n