Cocoa and Cocoa Touch are both widely popular for app development, among Objective-C programmers. Over here, we will take a look at the prime differences between these two frameworks.
For aspiring .Net and Objective-C programmers, there are plenty of useful online tutorials and code examples. Even so, there is every chance of a newbie feeling slightly lost in the myriad of different coding techniques, app development frameworks and other tools. It is of essence for any new developer to get his/her basics clear, before starting to work on any project. In the following discussion, we will clarify all probable confusions between the Cocoa and Cocoa Touch frameworks:
- iOS vs Mac development – This is probably the most important difference between Cocoa and Cocoa Touch, from the usability perspective. The former is used for coding for Macs (Mac OS X), while the latter is used exclusively for iOS app development. What’s more, things created for either Cocoa or Cocoa Touch only cannot be used/shared in the other framework.
- Underlying combination of frameworks – Both Cocoa and Cocoa Touch make use of the Foundation framework, but that’s where the similarity ends. The application framework for Mac systems makes use of AppKit, which is not present in Cocoa Touch. Instead, Touch is a combination of UIKit and Foundation. There are certain differences between the Foundation frameworks of Cocoa and Cocoa Touch as well.
- API differences – The APIs used for making desktop and mobile applications are not entirely similar – and that brings us to this point. All the classes used in Cocoa have the NS prefix (i.e., NSTextField and NSWindow). Classes in Cocoa Touch, on the other hand, are prefixed by UI (i.e., UITextField and UIWindow). A look at a Objective-C code snippet with classes should tell you whether it makes use of Cocoa or Cocoa Touch.
- Class portability – Keeping a few exceptions aside, most of the other classes in Cocoa and Cocoa Touch have roughly the same functionalities. Web and mobile app developers can port classes between the two frameworks – simply by changing the class names (along with certain other minor adjustments). In most cases, a complete overhaul of the program architecture is not required for porting classes.
- Better MVC patterns in Cocoa Touch – The pervasiveness of the Model View Controller (MVC) is the only field where we can go for a direct comparison of the two frameworks. Cocoa Touch comes out on top in this regard. The iPhone SDK has a reinforced MVC system, which performs better than the default MVC in Cocoa. Of course, Cocoa has multiple alternative design patterns – in addition to MVC.
- Absence of certain classes – We have already mentioned about the differences in the Foundation bases used in Cocoa and Cocoa Touch. There are certain classes in the Mac OS X development framework, that are not present in its iOS counterpart. For instance, Cocoa has NSHost, but no similar classes are there in Cocoa Touch. A thorough comparative study of the two frameworks would reveal a few other similar class-differences.
- Unified vs different views – Mobile app developers generally find it easy to learn and start working with Cocoa Touch. A key cause for this is the unified view of its SDK provided by UIView. Although Cocoa would rank pretty high on the user-friendliness count too, programmers would have to work with both NSWindow and NSView. The absence of a unified view can be an issue for some new Mac developers.
- Core classes – There is no differences on this count between Cocoa and Cocoa Touch. In both the app development frameworks, Application, Window and View are the three classes that are assigned maximum importance. During the code execution stage, these classes combine to perform a wide set of functions – ranging right from user-request handling, to displaying the generated UIs. All the Mac and iPhone apps created via Cocoa and Cocoa Touch respectively derive their functionalities from these three classes.
- Difference in the system support – There are certain unique features of Cocoa and Cocoa Touch, which can help a new app developer distinguish between the two. In particular, there are differences in the app lifecycle and sandboxing options in the two framework systems. Also, the total Memory Footprint in Cocoa and Cocoa Touch are significantly different. As already highlighted though, the nature of the classes is mostly similar.
- Device support – Apple had released the Cocoa API for desktop app development only, following the days of Rhapsody and Yellow Box. The framework can be used for for all types of Mac desktop app development. On the other hand, Cocoa Touch, with its additional animation features and gesture controls, is optimized for creating apps for iPhone, iPod Touch, iPad and even Apple TV. Over the next few months, Cocoa Touch is likely to become popular for making apps for Apple Watch as well. For probable types of applications for Watch, click here.
As is clear from the above discussion, there is not much of a common ground to base any comparisons between Cocoa and Cocoa Touch. We have only highlighted some broad differences between the two frameworks, so that new programmers find it easy to distinguish between the two. Most professional app agencies look for developers who are equally proficient in Cocoa and Cocoa Touch. It is advisable to have in-depth knowledge of both.