5

I have been reading through the apple documentation for creating frameworks for OSX and iOS.

Reading about the structure of frameworks, I began to wonder if there is really any need to create the symlinked folder structure described if you are targeting iOS only.

The structure supports multiple internal major versions of a framework. This is intended to allow programs to share a single copy of a framework, whether they are using the current version or an older version. Frameworks are all installed into a single location in OSX

It seems this structure was created to allow maximum code reuse.

However, on iOS each application will be installed into its own sand box with its own copy of any frameworks.

Considering this, I'm not convinced the same symlinked directory structure is necessary for an iOS only framework.

What are the advantages of keeping the suggested OSX framework directory structure?

1

In general, the major versioning mechanism is almost never used on macOS. I know of a single library that uses it. It's difficult to maintain the versioning, too. In fact, the documentation you linked to says:

Creating a major version of a framework is something that you should avoid whenever possible.

As such, I don't recommend using major versioning at all on either macOS or iOS.

Minor versioning is probably fine, but as you deduced, unnecessary for a single app. However, if you develop several apps that all ship with the same shared library, it can be worth using minor versions for your own purposes. I know that where I work, not all applications ship at the same time, and one may be using an older (minor) version of a framework where another uses a newer (minor) version. As such, it can help to understand differences when debugging, for example.

0

It's not necessary. iOS libraries are statically linked, so you don't have to worry about versioning issues.

  • On MacOS X, many libraries are also either statically linked or dynamically linked part of the application (that is, part of one application). Versioning is needed if multiple apps could share different versions of the same library. – gnasher729 Jun 19 '15 at 5:27
  • 3
    iOS8 adds support for dynamic libraries. This is important for extensions to be efficient. However, things are still sandboxed, so frameworks will never be shared across apps. Therefore, versioning is unimportant. – Alan Shutko Aug 18 '15 at 3:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.