Re: [問題] 怎麼強迫sub class一定要完成某個super …
後來查資料,和實作之後的整理…
方法目前找到的有兩種,
其中之一是利用 @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)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章