performSelector關於內存管理的執行原理是這樣的執行 [self performSelector:@selector(method1:) withObject:self.tableLayer afterDelay:3]; 的時候,系統會將tableLayer的引用計數加1,執行完這個方法時,還會將tableLayer的引用計數減1,因爲延遲這時tableLayer的引用計數沒有減小到0,也就致使了切換場景dealloc方法沒有被調用,出現了內存泄露。 函數
利用以下函數: orm
[NSObject cancelPreviousPerformRequestsWithTarget:self] 內存
固然你也能夠一個一個得這樣用: get
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(method1:) object:nil] it
加上了這個之後,順利地執行了dealloc方法 內存管理
在touchBegan裏面 io
[self performSelector:@selector(longPressMethod:) withObject:nil afterDelay:longPressTime] table
而後在end 或cancel裏作判斷,若是時間不夠長按的時間調用: form
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(longPressMethod:) object:nil] 原理
取消began裏的方法