Update 02-03-2015:
For code sharing, I recommend using git submodules, which require you to pass your code to a hosted repository, which can be open or closed.
Git Submodules
This is a way to distribute the code stored in the repository to anyone with access. This benefits that you can make changes to the repository, which other consumers can then choose to update their own submodule repositories. To be used as a project management source, git is required, and it also requires that the code be ported to a repository that consumers have access to.
To use the code as a submodule of git, you add the code repository to your managed git project with the command:
git submodule add https://github.com/user/submoduleProject
replacing https://github.com/user/submoduleProject with your own repository url.
After this has been added, you can use the commands:
git submodule init
and
git submodule update
to pull the code from the repository to the user's workspace.
If you want to add any changes or updates to the submodule, you can do this and push it to the repository. Users can then update their code with git submodule update to get the latest changes.
More information on git submodules can be found in the official documentation.
Hope this helps.
The application will not be accepted by the application loader or Xcode when sent to the App Store if the dynamic infrastructure is used in an application that supports anything less than iOS 8. This is sad because, as you said, this works for iOS 7 when testing on device.
The best way I can share my code with your team is to transfer the code folder and include it in the project, rather than include a dynamic structure. If you want the spaces between the names to be consistent, so that in the future you can use the dynamic structure and switch from iOS 7, I recommend using the structure around public methods and classes to get the namespace. For example:
public struct MyFrameworkName { public func doSomethingAmazing() { // Code... } public class DecentClass: NSObject { // Code.. } public var terribleString: String }
This will allow you to call methods inside the rest of the application in the same way as using the Dynamic Framework
var myObject = MyFrameworkName.DecentClass() myObject.doMethod() MyFrameworkName.doSomethingAwesome() MyFrameworkName.terribleString = "HEY";
In response to your concern about linking to a structure directly from the derived data directory, this is usually the wrong approach.
Ideally, you copy the framework into the project directory and then link it to this version. This allows you to distribute the project’s source directory to other people, and the structure will remain in the right place relative to the project’s source folder.
Hope this helps answer your question.