[英]iOS Delegate Issue with multiple view controllers
我有一個帶有兩個視圖控制器的應用程序..父控制器,一個被推入堆棧的子控制器。
我已經對程序進行了編碼,以便在調用父視圖或子視圖的viewDidAppear方法時,將networkClass的委托設置為父OR子。
因此,問題是,我的子類實現了一些委托方法,而在父類中不需要這些委托方法,因為父類從不進行某些網絡調用。 但是,當我在子類中發起網絡調用,並在完成后按BACK到父類時。父類現在已設置為委托。
但是由於父類沒有實現委托方法,因此它會崩潰。
我可以知道解決方法嗎?
選項1:在子viewWillDisappear
取消操作。
選項2:在networkClass
,在調用該方法之前檢查該方法是否已實現。
選項3 :(代碼氣味):在父級中實現存根。
在任何情況下,您都應該取消操作(操作1)。 如果您在協議定義中將這些功能標記為optional
功能,則一定要檢查其是否存在(Op.2)。 如果沒有,您應該已經收到有關未完成實現的編譯器警告。 不要忽略任何編譯器錯誤,尤其是關於未實現的方法! 如果完全實現它們沒有意義,則應認真考慮它們是否應該是可選的(2)。 當然,您可以實現存根( -(void)callback1{}
),但這很少是正確的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.