At codecentric we are using a central Jenkins continuous integration server to build all our software modules automatically after every check in procedure. The status of all builds is permanantly visible for all employees through screens in the offices and beside the coffee machines. This gives us transperancy about all our software modules. All modules? - Oh well, at least about all our Java and Android modules. But what about all these tiny iOS applications? As iOS apps do not compile on our Linux based build server these modules abscond themselves from showing up on our build monitors.
This needs to be changed. This article is a step by step introduction showing you how to integrate iOS builds in an existing Jenkins CI build infrastructure. (read more…)
In iOS, windows and views are used to present the application content. Windows just provide a basic container for the application’s views. During iOS development you’ll notice that Model-View-Controller (MVC) pattern is used extensively. Coming from Java you’ll be familiar with this pattern, and this proves to be very helpful. Although you can build views programmatically, you’ll find out that it’s usually much easier to use Interface Builder for this task. It greatly simplifies the work you have to do in creating your application’s user interface. It enables you to graphically construct and configure your windows and views. The assembled views are place in a nib (.xib) file (a resource file that stores a freeze-dried version of the views). The nib file is loaded at runtime, and objects inside it are reconstituted into actual objects that your can then manipulate programmatically.
View Controllers manage the views and they provide a link between an application’s data and its visual appearance. They are descendants of the UIViewController class, defined in the UIKit framework. View controllers can be divided into three general categories that reflect their role:
- Custom View Controller: Controller object that you define for the express purpose of presenting your content. You’ll usually have a decent number of these.
- Container View Controller: Specific type of view controller that manages other view controllers and defines the navigational relationships between them (UINavigationController, UITabBarController, etc). You use the container view controllers provided by the system as is.
- Modal View Controller: View controller (container or custom) that is presented modally.
For Java developers starting iOS development, the hardest shift will probably be the Objective-C, the Apple’s language of choice. The Objective-C is extension of the standard ANSI C language, providing syntax for defining classes and methods, and other object oriented constructs. So any experience with C will help you a lot. In fact, since Objective-C is a superset of the ANSI version of the C, you’ll need to know the basics of C before learning Objective-C.
Unlike in Java, where you define and implement class in one file, in Objective-C you have two files. Same as in C, you have header files (.h) for public declarations and source files (.m) for implementation, which can hold both Objective-C and C code. You can even use C++ if you want (.mm files). The following example shows DeathStar class implemented in Java and Objective-C.