在我的應用程序中,我做了很多網絡加載。我的數據模型由執行此操作的「Loader」對象組成,並在完成/失敗時調用其委託。代表都符合「LoaderDelegate」協議。調用委託方法,無法識別的選擇器,因爲發送到錯誤的對象
我遇到的問題是,有時看似隨機的對象,而不是委託,正在獲取委託消息。這當然會由於無法識別的選擇器而導致崩潰。
只有一組崩潰日誌告訴我哪一個裝載者有問題,其他人沒有這些信息,只是收到消息的隨機對象。
我被困在如何確定這個問題的真正原因。
一套崩潰日誌有一個加載器試圖調用它的代表,但達到_UIImageViewExtendedStorage
。另一個裝載機正在達到__NSCFInputStream
。另外__NSBlockVariable__
。還有一個,CALayer
。
而這只是我3天前的最新測試版。
如果每次都是同一個對象,那將是一回事,但它看起來幾乎是隨機的。不知何故,內存是否可能被一個新的對象覆蓋?
我的所有裝入器的委託屬性都是assign屬性,但是裝入器完成時代理始終是活動的(委託是我的視圖控制器調用裝入器)。
我正在使用assign,請參閱我的問題的最後一句。 ;)我目前沒有在dealloc中設置委託給nil,所以我會試試。雖然我不確定爲什麼會導致這個問題,因爲只有在nsurlconnection完成後纔會釋放加載器,並且他們會調用它們的代理。另外,我知道將所有委託調用包裝在'respondsToSelector'中將會停止崩潰,但我想找出問題的根本原因。代理財產爲什麼一直指向錯誤的地方對我來說沒有意義。 –
這是太多的代碼來發布一切,但爲了給你一個結構的想法,我所有的裝載機都是從一個Loader超類來分類的。所有加載器的委託屬性實際上都在超類中。不知怎的,這可能是問題的一部分嗎? –
_is_委託的對象需要'_null' _other_對象的'委託'出口;第一個代碼片段錯誤地指出一個對象應該''不要'擁有''委託'出口。 @ einsteinx2 –