前面提到可以把may cause a leak當成安靜的美代碼忽略掉,但其實還是有另一種方法滴。
你可以用如下代碼替換以消除該警告:
這樣等于告訴編譯器在選擇器被觸發執行時(fire)建立一個定時器。當涉及到用一個定時器完成選擇器時,不可能傳回一個值。是以編譯器會停止抱怨。
在這個例子中,向一個沒有參數的selector傳遞一個nil參數,會被簡單的忽略掉。
但是因為這裡現在涉及到定時器,并且盡管延時為0,selector仍然可能不會在目前幀渲染之前執行。
是以這可能會在selector執行前增加單個幀渲染的一點延時——但在關閉一個彈出菜單時不應該成為一個問題。