How do third-party libraries work in Objective-C and Xcode?

12,620

Solution 1

external code can be:

a dynamic library (.dlyb) which can be distributed as a framework and installed on the machine. But be aware, that you can't install frameworks on the iPhone - your app is sandboxed. A set number of frameworks are available to you which are on all iPhones.

you can also consume a static library. a static library is compiled into your apps binary during linking.

links: http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/

The other and fairly common form is consuming code. It's common in iPhone development because how closed the device is and how sandboxed your app is. it's also popular because many components and libraries are open sourced on github. sharing code usually comes in two forms:

copy code - add some files to your app and off you go. you have to update files on some perioding basis.

xcode sub-project - you can add an external libraries xcode project as a sub-project to your project. that sub-project can produce a static library (target) which your app consumes. in xcode4, you can also have a workspace which contains multiple projects.

Consuming code has the benefit of being able to debug into it. The more complex the code becomes, the more attractive consuming a sub-project is. If it's a handful of self-contained files, then just adding the files is simple.

hope that helps some.

Solution 2

Third party frameworks can come in source form, or as a compiled framework. A compiled framework is probably closest to a jar-file that you're used to. In this case, the framework is available as source code, so they suggest adding the framework project to your project.

I prefer to compile my frameworks separately, and just include the compiled framework in my projects. Either way works.

Solution 3

An another way is a dependency manager called CocoaPods. It is still beta, but it is ready to use. There are a few recipes for some libraries and if you don't find that you want, you can create a specification for it. A specification for RestKit is available.

Share:
12,620
Mathias
Author by

Mathias

Updated on June 08, 2022

Comments

  • Mathias
    Mathias almost 2 years

    Pretty new (2 weeks) into Objective-C and Xcode, and I'm trying to add my first "external" library, namey restkit, to read some JSON from an external server.

    However, looking at their "getting started" guide, from what I understand you just download a package with the sourcecode and link it in and build it as part of your own build somehow... (the guide is here), expecially point 4 is interesting)

    I am a many-years Java developer and I try to compare it to how it works there, with compiled, packaged jar-files that you can't alter. How do jarfiles relate to this? From what I can see, you can just go in and change any of the third-party files as you see fit.

    If someone could help me grasp this I'd appreciate it.

  • Mathias
    Mathias over 12 years
    Thanks a lot mate! Wow, compiling, so guess i'll have to figure that one out then :)
  • Mathias
    Mathias over 12 years
    Great answer thanks. Since you seem to know your way around, would you have time to look at that guide, step four. That involves the "sub-project" approach you mentioned i think, but i'm using xcode 4.2 and i'm not sure how to complete that step. In my view, there are no checkboxes like in the guide...
  • fatuhoku
    fatuhoku about 10 years
    It's matured a lot since the question was asked — you'll still find a lot of useful Obj-C libraries not on it though.