我只是好奇爲何UIResponder方法返回一組UITouch對象,而不是隻是一個數組爲什麼一套UITouch?
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
我不能完全包住我的頭周圍的好處是什麼,或者它背後的目的。希望有人能夠解釋背景中發生的事情,以及最終如何最終得到一套UITouch。例如,如果我要在屏幕上拖動兩根手指,那麼這不就是一個UITouch對象數組嗎?
我只是好奇爲何UIResponder方法返回一組UITouch對象,而不是隻是一個數組爲什麼一套UITouch?
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
我不能完全包住我的頭周圍的好處是什麼,或者它背後的目的。希望有人能夠解釋背景中發生的事情,以及最終如何最終得到一套UITouch。例如,如果我要在屏幕上拖動兩根手指,那麼這不就是一個UITouch對象數組嗎?
我們大多數人只能推測爲什麼UIKit報告一組而不是一個數組。
這裏是我的猜測:它強調觸摸不是以任何特定的順序,並且可能不是從一個事件到下一個事件的順序相同。由於Set
或NSSet
沒有下標運算符,因此在處理稍後的事件時很難將存儲觸摸的索引(0,1,2等)用於使用。
它也可能是一個實現細節。 UIKit僅以60 Hz(大多數設備)向您的應用程序報告觸摸事件,並與屏幕刷新同步。如果硬件支持頻率超過60 Hz的報告觸摸事件,則UIKit需要合併多個事件才能進行相同的觸摸操作。從某種意義上說,如果UIKit將更新後的觸摸作爲一組而不是數組來存儲,則會自動進行合併。
「Sets」和「Arrays」都是集合對象,所以是的,所有的觸摸都可以在任何一個或字典中返回。究其原因,我想,蘋果選擇了返回一組是雙重的:
「爲什麼」的問題往往是基於意見的。特別是,你在問爲什麼蘋果選擇以某種方式設計某種東西,而且他們傾向於不在SO上發佈官方聲明。因此,你不會得到一個權威的答案,社區可以提供的唯一答案是「如果我正在設計它,我會這樣做,因爲......」,這是基於意見的。 – rickster
我必須編輯和改寫,我想我真正要問的是當我得到一組UITouch時究竟發生了什麼 – jhamPac
您的問題對我而言仍然不清楚。該方法通過一組UITouch對象進行調用,該對象表示已移動的觸摸(兩個或多個觸摸點)。觸摸之間沒有*命令*,需要將它們存儲在數組中。 –