取消performSelector的執行的方法cancelPreviousPerformReques

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裏的方法

相關文章
相關標籤/搜索