On Jan 31, 2016, at 14:38 , Jens Alfke <email@hidden> wrote:
It is. I was told to use this approach by an Xcode engineer.
I look forward to using it.
The reason it’s a big deal is because of the way access controls work in Swift: ‘private’ is per-source-file, and ‘internal’ is per-module, with nothing in between. That makes it hard to have “private” behavior between sub-groupings of classes within a target. (In Objective-C you control this by having multiple .h files, and enforce rules about who’s allowed to #import what.)
For Swift, the equivalent would be multiple modules, but you can only get that with multiple frameworks. Creating embedded private frameworks is trivial in the current Xcode, *except* when you have multiple platforms using shared source files, which means shared ‘import’ module names, and *that* is an ugly manual process.
Multi-platform targets make this difficulty go away. I hope Xcode provides a streamlined way of doing this (i.e. one that doesn’t involve a trip to Build Settings, but provides a simple choice in — say — Info).
|