1) Interface development
(+4) The editor of dialogue boxes is well thought-out and a relatively complex interface can be built pretty fast. To link the interface elements with a code it is necessary to create a variable and link it to the corresponding element in the interface editor. (-1) But, if you forget to do this, neither the compiler, nor the system will inform the developer about it. The interface just won't work, and eventually it can waste the development time.
2) (+3)The Objective C language is easy for beginners to become familiar with , but it needs to be careful with allocation/de-
3) The API is constantly updated for iOS. (-1) The required functionality often becomes invalid with the new firmware. Therefore, sometimes it is required to support several types/implementations of one kind of functionality.
4) (+3) The interface operates faultlessly (on earlier devices), even with intensive updating of content. The nice animation of the design elements is supported.
5) To release the program in the AppStore you are required to be a registered developer and have to extend (or pay for) the licence annually. (-1) This then clears the keys for release and the keys for osX, related with the dispatching the program and testing it on devices. The approval process takes from one to three weeks.
6) (-1) The demo versions (for showing to the customer) have to be compiled with the special keys, which contain the phone data, and it usually takes a lot of time. The number of test phones is limited.
Advantages / disadvantages of Android OS:
1) (+1) The interface editor is simple, (-1) but in the most cases it is required to add the separate parameters in the corresponding xml.
(-1) It is also necessary to take into account that Android devices have different sizes and dimensions of their screens. In contrast to iOS, the binding to the element takes place exclusively via tags – with a code from the required context. If the element is not found, (+1) the compiler will inform the developer about it in the editing mode.
2) (+2) The main development language is Java, but the functionality can be expanded by using of C or C++. You can use any libraries written in Java bya huge Java community. The work with Java almost completely eliminates the necessity to keep an eye on the memory. Java code (without considering the Android interface) can be repeatedly used for Web and desktop projects.
3) (+1) The update of the Android API doesn't cripple the earlier written code. Google provides special libraries for supporting of the earlier firmware that is the new interface solutions can be used on the ancient devices.
4) (-1) The more complicated interface, with a huge amount of elements, can have the lower performance. Also the set of Animations is quite primitive.
5) (+2) (In comparison with what?) Android supports a wider range of devices and technologies (among the interesting technologies, the NFC can be mentioned – a method of data exchange over a short distance), including USB. A full-fledged official port, Android-х86, can be also installed on the PC.
6) (+1) Demo version can be easily prepared for a customer.
7) (+1) Developer registers with a one-time payment, and the creation of the keys is simpler than on iOS.
What do you need to buy for iPhone development?
The unique development environment for iOS is the XCode, which is specific to MacOS. Therefore you will need Mac machine with at least of 4 GB RAM and 2.5 DualCore CPU. The iPhone or iPad are required for testing.
What is desirable to have from the Apple Co side?
a) Decrease the prices for devices – iPhone, iPad, iMac till the adequate levels, as well as let the registration be one-time;
b) Completely switch to Modern Objective C as well as extend and simplify the communication with C++;
c) Make the interface more flexible;
d) Provide the functionality support from the new SDK down till the iOS 4.3 version minimum.
Why don't we switch to Objective-C completely?
The Objective-C is pretty specific. If you've been originally oriented to many development platforms and have an experience with other languages, the Objective C may look like an inconvenient language, despite the competently written API and some of interesting programming solutions. Very often the required functionality is just unavailable because of restrictions of the devices, which the customer is oriented to (Apply can simply change the old function naming, which complicates the development)
Can the developer's iPhone be visually distinguished?
No, unless you see that the person permanently hits its iPhone and study the interface.