项目上线了 但是一直有一个BUG修复不了 似乎那个crash崩溃地址每次都不同 所以很难定位类似libobjc.A.dylib objc_msgSend (sendMessage:)这样的错误
检查代码 发现有这么一个在ARC模式下的警告
capturing self strongly in this block is likely to lead to a retain cycle 这是一个block导致的循环引用
这个警告会导致什么问题 会导致直接崩溃吗 我想知道跟上面的崩溃有联系吗
PHP中文网2017-04-17 17:52:04
兩者有些差別。
objc_msgSend (sendMessage:)是因為對釋放的物件呼叫方法。
capturing self strongly in this block is likely to lead to a retain cycle
會導致創建的物件無法釋放。
例如每次進入一個 vc 時,都是新建立的。 vc裡面的block對self強引用了。
這會導致這個 vc 無法釋放,每次進入都會創建新的vc,舊的vc也仍然存在。最後,應用程式會因為佔用記憶體過多被系統清理掉。
ringa_lee2017-04-17 17:52:04
這會導致記憶體洩露,但是是否會導致崩潰要看情況。
比如說,某個VC註冊了通知,但是由於循環引用,沒有得到正確釋放,而在這之後,別的地方post了這個通知,那麼,這個VC就會去執行相應操作,可能它所操作的東西已經被釋放了,那麼就可能會崩潰。
對於你的libobjc.A.dylib objc_msgSend (sendMessage:)這樣的錯誤,是很難定位的,你應該看看是否還有其他信息,比如類似於這樣的:
你可以試試使用Fabric.