作者aecho (星空下的鲔鱼)
看板MacDev
标题Re: [问题] 怎麽强迫sub class一定要完成某个super …
时间Thu Aug 20 23:07:31 2009
後来查资料,和实作之後的整理…
方法目前找到的有两种,
其中之一是利用 @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)