Re: Swift - internal class conforming to public protocol
Re: Swift - internal class conforming to public protocol
- Subject: Re: Swift - internal class conforming to public protocol
- From: Andreas Mayer <email@hidden>
- Date: Tue, 24 Nov 2015 17:59:47 +0100
> Am 24.11.2015 um 15:10 schrieb Roland King <email@hidden>:
>
> in this class, centralManagerDidUpdateState() is an internal function however the compiler is happy that the class satisfies CBCentralManagerDelegate even though that protocol is public and centralManagerDidUpdateState() is also public. How can this be, how can an internal function make a class conform to a public method on a public protocol. That function is required in the protocol.
Maybe I'm misunderstanding something, but I'm not sure why you think this should be a problem?
You can always make things more restrictive.
It's the other way around that is not allowed. Say, using an internal protocol to define a public class - that wouldn't work, since the user of the class might not have access to the internal protocol.
The Swift book says:
----
Guiding Principle of Access Levels
Access levels in Swift follow an overall guiding principle: No entity can be defined in terms of another entity that has a lower (more restrictive) access level.
----
(I had to find the online version, since iBooks doesn't let me copy from the Swift book. WTF?!)
> How can this be, how can an internal function make a class conform to a public method on a public protocol. That function is required in the protocol.
It's fine because the class itself is internal. So there's no problem with centralManagerDidUpdateState() being internal too.
As you found out, that changes, when you make the class public. Because now the user of the class might not be able to access centralManagerDidUpdateState() if it's internal.
Disclaimer: I'm still learning Swift myself, so I might have everything totally wrong. ;)
Andreas
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden