Re: [問題] 怎麼強迫sub class一定要完成某個super …
※ 引述《aecho (星空下的鮪魚)》之銘言:
: 如題,
: 像 C++裡,可以在super class裡宣告pure virtual function,
: 然後sub class在compiler時,
: 就會被提醒一定要完成這些pure virtual function。
: 那如果在objective-c 裡,要怎麼做到這樣的事情呢?
: protocol雖然有@require和@optional,
: 但是這種情形很像是,在super class底下是@optional
: 而sub class卻是@require~~
對 C++ 不了解, 不過看最後兩行應該是這樣...
例如你有一個 class 叫 Race, 有兩個 subclass 叫 Asian 和 Caucasian
然後 Asian 和 Caucasian 都有 method -dressUp
所以你打算在 Race 裡加上這個方法, 但不希望 Race 裡的方法被呼叫
那你可以在 Race.m 裡的 -dressUp 呼叫 NSException 的 +raise: format:
這樣如果呼叫了 Race 的 -dressUp, 或者呼叫 subclass 的 -dressUp 而忘了覆寫
編譯器應該就會丟出 exception 讓你知道
好像還有一種作法是用 NSObject 的 -doesNotRecognizeSelector:
可以自己去查查參考文件實驗看看, 我沒試過...
這東西好像叫做 abstract methods, 不知道跟你要的一不一樣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.72.123
推
08/18 13:42, , 1F
08/18 13:42, 1F
→
08/18 13:43, , 2F
08/18 13:43, 2F
→
08/18 13:43, , 3F
08/18 13:43, 3F
推
08/18 16:05, , 4F
08/18 16:05, 4F
→
08/18 16:05, , 5F
08/18 16:05, 5F
→
08/18 16:06, , 6F
08/18 16:06, 6F
→
08/18 16:06, , 7F
08/18 16:06, 7F
→
08/18 16:07, , 8F
08/18 16:07, 8F
→
08/18 16:07, , 9F
08/18 16:07, 9F
→
08/18 16:08, , 10F
08/18 16:08, 10F
→
08/18 18:58, , 11F
08/18 18:58, 11F
→
08/18 18:59, , 12F
08/18 18:59, 12F
→
08/18 18:59, , 13F
08/18 18:59, 13F
→
08/20 10:42, , 14F
08/20 10:42, 14F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章