<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 2, 2017, at 23:21, Goffredo Marocchi <<a href="mailto:panajev@gmail.com" class="">panajev@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><br class=""><div class="">Sent from my iPhone</div><div class=""><br class="">On 3 Aug 2017, at 01:09, Jordan Rose via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><div class=""><b class=""><br class=""></b></div><div class="">'required' initializers are like methods: they may require dynamic dispatch. That means that they get an entry in the class's dynamic dispatch table, commonly known as its <i class="">vtable</i>. Unlike Objective-C method tables, vtables aren't set up to have entries arbitrarily added at run time.</div><div class=""><br class=""></div><div class="">(Aside: This is one of the reasons why non-@objc methods in Swift extensions can't be overridden; if we ever lift that restriction, it'll be by using a separate table and a form of dispatch similar to objc_msgSend. I sent a proposal to swift-evolution about this last year but there wasn't much interest.)</div></div></blockquote><br class=""><div class="">If I missed replying to that originally I also missed the chance to say that it would be a lovely idea and dynamic dispatch in some cases is just what the doctor ordered (runtime editable method tables).</div><div class="">This is especially <b class="">especially important with extensions for classes and default methods (and the current rules for overriding methods in the implementing class)</b>, please resubmit the proposal :).</div></div></div></blockquote></div><br class=""><div class="">Thanks for the vote of confidence. :-) Here’s the old proposal for now, likely to be revised soon. <a href="https://github.com/jrose-apple/swift-evolution/blob/overridable-members-in-extensions/proposals/nnnn-overridable-members-in-extensions.md" class="">https://github.com/jrose-apple/swift-evolution/blob/overridable-members-in-extensions/proposals/nnnn-overridable-members-in-extensions.md</a></div><div class=""><br class=""></div><div class="">Jordan</div></body></html>