Re: [問題] 怎麼強迫sub class一定要完成某個super …

看板MacDev作者 (星空下的鮪魚)時間16年前 (2009/08/20 23:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
後來查資料,和實作之後的整理… 方法目前找到的有兩種, 其中之一是利用 @protocol, 然後在super class弄個 id <protocol> delegate; 之後在sub class中設定這個 delegate, 而super class中歡樂的使用這個delegate就好。 優點是 id <protocol> 中的<protocol>會做type checking 在compiler時就會跟你說,你有哪些protocol中的function沒做。 而缺點就是要多打幾行程式碼…在sub class中要明確的說使用該 protocol 並且設定 delegate~~ 方法二就是u 大所說的,raise exception, 或是使用 -doesNotRecognizeSelector:_cmd _cmd會自動代入該method name的樣子,這個指令也會產生exception。 而sub class如果呼叫 [super somemethod]; 的話,因為會執行到這個程式碼, 所以也會有exception產生。 缺點是,這並不會在compiler time就檢查sub class有沒有實作該method, 而是在runtime時,執行到會產生exception的部份,才會告訴你, 該method並沒有實作,所以執行到super class的method。 -- 有多少笑語 就有多少哭泣 幸福的背後 總是隱藏著悲劇 -----摘自 趙寧 --找一個字代替-- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.192.154 ※ 編輯: aecho 來自: 218.160.192.154 (08/20 23:08)
文章代碼(AID): #1AZMQs_t (MacDev)
文章代碼(AID): #1AZMQs_t (MacDev)