> On 24-Dec-2015, at 9:34 AM, Andrey Tarantsov <[email protected]> wrote:
>> 
>> 2. If I'm releasing a Swift binary framework, and I haven't yet thought 
>> about which classes / methods should be overrideable, should I release it in 
>> everything-is-overridable mode, or in nothing-is-overridable mode?
> 
> That's a tricky one. Ideally you would pretend that nothing is overridable, 
> but some hack like @testable makes everything overridable when really needed.

One point of view mentioned earlier is that by the time we’re onto writing 
frameworks that aren’t meant to be used from Obj-C, we can use protocols all 
the way. You can test by providing a mock implementation of the protocol - the 
“Crusty" talk in the last WWDC talks about this briefly.

> 
>> 3. If I'm using a third-party (non-Apple) Swift binary framework, and if the 
>> framework author hadn't really thought about which classes / methods should 
>> be overrideable, would I want the power to override everything in the 
>> framework now?
> 
> Yes. There were many cases where fixing up a pod was just an important as 
> fixing up an Apple framework.
> 
> Yes, I have an option to change the source — but it's vastly more 
> labour-intensive if all you need is a simple isolated change. (Especially if 
> that change isn't likely to be accepted upstream.)
> 
>>    (Note that if I get that power, I forgo all hope of getting a 
>> binary-compatible update to the framework with correct annotations about 
>> which classes can be safely overridden and which aren't meant to be 
>> overridden.)
> 
> Sure, and that doesn't matter because all frameworks are built with your app 
> anyway.
> 
>> A3: Ideally, I'd like to be able to override everything in the framework I 
>> use, but if that implies that I can't get a binary-compatible fix to the 
>> framework, maybe I can live without that overridability.
> 
> Why would you want binary compatibility for non-Apple frameworks? It's not 
> like you can install them globally (or would want to, even if you could).
> 

If I got v1.0 of a binary framework and wrote code that worked with that, and 
then upgrade to v1.1 for some fixes and find that my code doesn’t compile 
anymore (say “Error: You can’t inherit from NewlyFinalizedClass”), I wouldn’t 
like that.

roop.

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to