And, as I know, it's not possible to call protocol's implementation in that case
> 16 нояб. 2016 г., в 9:09, Игорь Никитин via swift-users > <swift-users@swift.org> написал(а): > > Right, it’s a recursion, because this > > (self as FooPro).fooFunc() > > Will call FooClass’s method implementation > > You can read more about dispatch rules here: > https://medium.com/ios-os-x-development/swift-protocol-extension-method-dispatch-6a6bf270ba94#.hkh1rc56p > > > >> 16 нояб. 2016 г., в 4:29, Rick Mann via swift-users <swift-users@swift.org> >> написал(а): >> >> Okay. I coudln't find official documentation on this, and I don't currently >> need to do this, but wanted to fully understand it. >> >>> On Nov 15, 2016, at 17:27 , zh ao <owe...@gmail.com> wrote: >>> >>> 'Default' implementation in protocol extension is used as fail safe. You >>> should not consider it like something super class does. If you want it that >>> way, use class inheritance instead. >>> >>> Zhaoxin >>> >>> Get Outlook for iOS >>> >>> _____________________________ >>> From: Rick Mann via swift-users <swift-users@swift.org> >>> Sent: 星期三, 十一月 16, 2016 07:51 >>> Subject: Re: [swift-users] Attempting to call default protocol >>> implementation crashes Playground >>> To: Dan Loewenherz <d...@lionheartsw.com> >>> Cc: swift-users <swift-users@swift.org> >>> >>> >>> Well, this is a standard protocol default implementation. I was >>> experimenting to see if it was possible to call the default implementation >>> after providing a concrete implementation. >>> >>>> On Nov 15, 2016, at 14:47 , Dan Loewenherz <d...@lionheartsw.com> wrote: >>>> >>>> What are you trying to accomplish here, more concretely? >>>> >>>> My first thought is that you shouldn't implement the same function in both >>>> a protocol extension and a conforming class. Why not just give them >>>> different names and call the function from within the extension instead of >>>> from the class? E.g. >>>> >>>> protocol FooPro { >>>> func _fooFunc() >>>> } >>>> >>>> extension FooPro { >>>> func fooFunc() { >>>> print("fooFunc default") >>>> _fooFunc() >>>> } >>>> } >>>> >>>> class FooClass: FooPro { >>>> func _fooFunc() { >>>> print("fooFunc FooClass") >>>> } >>>> } >>>> >>>> let fc = FooClass() >>>> fc.fooFunc() >>>> >>>> Dan >>>> >>>> On Tue, Nov 15, 2016 at 4:28 PM, Rick Mann via swift-users >>>> <swift-users@swift.org> wrote: >>>> The following gives Xcode 8.1 a very hard time. Eventually I get a Bad >>>> Access on the last line. I'm guessing it's a recursive call. Is there any >>>> way to call the default implementation from a "real" implementation? >>>> >>>> protocol FooPro >>>> { >>>> func fooFunc() >>>> } >>>> >>>> extension FooPro >>>> { >>>> func >>>> fooFunc() >>>> { >>>> print("fooFunc default") >>>> } >>>> } >>>> >>>> class FooClass : FooPro >>>> { >>>> func >>>> fooFunc() >>>> { >>>> (self as FooPro).fooFunc() >>>> print("fooFunc FooClass") >>>> } >>>> } >>>> >>>> let fc: FooPro = FooClass() >>>> fc.fooFunc() >>>> >>>> >>>> Thanks! >>>> >>>> >>>> -- >>>> Rick Mann >>>> rm...@latencyzero.com >>>> >>>> >>>> _______________________________________________ >>>> swift-users mailing list >>>> swift-users@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-users >>>> >>> >>> >>> -- >>> Rick Mann >>> rm...@latencyzero.com >>> >>> >>> _______________________________________________ >>> swift-users mailing list >>> swift-users@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-users >>> >>> >> >> >> -- >> Rick Mann >> rm...@latencyzero.com >> >> >> _______________________________________________ >> swift-users mailing list >> swift-users@swift.org >> https://lists.swift.org/mailman/listinfo/swift-users > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users