Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Given the landscape in which mobile applications exist is currently changing, i expect the "best" answer to this question to change as well, but for right now, which are the best operating systems/frameworks upon which to build mobile apps today.
I'm thinking in terms of cost, learning curve and market penetration.
Android
Cost: 0
Learning curve: More or less 0 if you know Java
Market penetration: HUGE
Android phone sales is expected to rise 900% this year, and the market isn't limited to phones. Some mini computers are going in that direction as well, choosing Android as their OS.
You need to define the end-result requirements for the application.
Part of the answer depends on what mobile hardware you will be running. And, whether or not you need to use unique abilities of your hardware (touch-screen, barcode scanner, gps, special buttons, VOIP, etc.) or if a simple input/output screen framework is sufficient.
That might drive your decision towards a local application or something more remote like a web application or terminal services. (There are, of course, local applications that use remote services also. Do you need to consider multiple front-ends?)
In addition, where are your development strengths? What are your language proficiencies? As you mentioned, mobile application development can have a steep startup curve for learning and for setting up your initial development/debugging/deployment environment. Is that worth it, or can you leverage desktop or web development experience and deploy remotely?
Once you make these decisions and determine your development environment and target, then you can take the next step to look at frameworks and methodologies specific to your needs.
This just in -
Today's Code Project Insider included this InfoWorld article -
"How to choose a mobile
development platform"
In terms of market share, at this point you won't get better visibility and hit ratio than you will get with the iPhone. There are plenty more Blackberrys than iPhones, but the number of people who buy and download apps on the iPhone are much much higher.
However, the cost are pretty high if you want to start developing for the iPhone.
You have to get a Mac if you want to do any sort of iPhone development. That'll set you back at the ~1k on the low end.
You'll have to pay for the iPhone Developer account for $99/year
Learning the iPhone SDK, which is in Objective-C, will be similar to C/C++ if you already know it.
That said, who knows what kind of splash the Palm Pre will make. So market share will be unknown, and I'm not sure of cost, but if you know HTML/Javascript, you're set.
In terms of Android, while it's a nice platform, market share is still barely a drop in the bucket. It is written in Java, and it has a lot of nice APIs, but until you have a lot more people with Android devices in their hands, it's kind of moot.
Blackberry would be a good platform to develop on if not for the iPhone. The SDK is in Java and from what I hear have decent tools to get the job done. The advantage here is that you'll have a lot of potential for consumer facing apps and potential for enterprise apps (because every business has too many of these :)
So, it depends on how much you want to spend and what kind of apps you're going with. Learning curve, I think, shouldn't be an issue because each of these platforms has their own SDK you'll have to learn anyway, so you're starting at about the same level for each of these platforms.
My picks are (in order):
iPhone
Blackberry
??
That said, that is the current view of mobile app development. It's always good to keep updated and at least have a notion of the other platforms so you could potentially branch out.
As you wrote, the environment is constantly changing, but if you plan to make your app the most portable as possible, in my humble oppinion you need to start developing with Java Micro Edition (J2ME). One of the best IDEs for the job is Netbeans.
Depends on the device I suppose. I don't think there is one common way to write something that will work on every device.
The big ones would be:
Windows Mobile: C++ or .NET Compact Framework (JavaME if you install the Java Runtime manually)
iPhone: C++ (i think). IIRC it doesnt support Java yet.
Android: JavaME
Blackberry: JavaME
Other non-smart/PDA devices: Probably C++?
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I want to build an application for all platforms but I wonder!
What is the difference between ionic-Framework and Xamarin.Forms and,
Which is better to build an application for all platforms?
In the hands of skilled engineers, Ionic and Xamarin are both exceptional cross-platform development assets, which, compared with building native apps for two or more platforms, will save your business both time and money. Any decision about which one to use, though, should be subject to rigorous assessment of your needs, budget, and development objectives.
If app quality is a priority, you’re integrating with a lot of preexisting .NET architecture, and/or you need to build apps for a wide variety of platforms and versions, Xamarin will almost certainly be the best fit.
For smaller or less frequent projects on restricted budgets, Ionic will provide you with a fast and effective route to functional if unspectacular mobile apps for iOS and Android devices.
Depending on your resources, and whether you will develop apps in-house or with the help from external development companies, you might even wish to utilize both of these popular frameworks. Neither one is particularly costly to implement, especially since Microsoft started bundling Xamarin for free with the Visual Studio Community edition and Xamarin Studio (for Mac).
I think it mainly depends on what you want to do in your application.
If all you want to do is pushing some data and images (e.g. create a shop platform) i don't see any reason, why ionic wouldn't do the job and probably you'd see results a bit faster, as you don't need to struggle with a lot of native adaptions (such as file system access, etc...), though I don't think that choosing xamarin would set you back in terms of X months more.
However if it comes to using native features, such as camera, gps, sensors, whatever you will probably be limited to what the ionic api offers and I don't know how long the turnaround times will be until new features which may appear in the future are getting implemented into the framework.
Performancewise I am honestly sceptical if that mix of html, css and javascript/jquery will be anything comparable to what xamarin can get you to, as Xamarin actually produces an app which can compete with apps written natively.
I am not sure how deep you can get "under the hood" with ionic, though I know that with xamarin, you can actually go very deep and develop features that can use the native code of your target platform.
Actually by looking at the user base (or better to say the amount of questions here on stack overflow) one might be tempted that ionic has more questions than xamarin.forms, however that doesn't take into account that actually any question about xamarin, xamarin.forms, xamarin.android, xamarin.ios and c# might hold relevant answers and support for your upcoming problems. However to be fair, also ionic has quite an impressive amount of q&a answers posted here, so i would say that is a draw.
My conclusion would be: If you need to create a data-pushing app fast, you could use ionic, however if you need performance, native methods and want to be able to use particular native features, Xamarin would hold that door open for you.
Disclaimer: I have been developing apps with xamarin forms for about 5 years now and have never used the ionic framework at all and therefore my knowledge about ionic is limited to what I read on summaries. Probably my answer might omit particular benefits that ionic might offer and I really hope that a more experienced ionic developer might have something beneficial to add.
However, If you were asking about my personal advice, My answer would be: Use Xamarin
We had to answer this question about 18 months ago. For us the core question was if the app also needed to be deployed to a web environment. In our case we needed to support the same functionality in a native iOS/Android app, as well as a website (for the features that the web can handle). In that scenario Ionic is the clear winner.
If you don't have to worry about web, then I think Xamarin is a great option. I'd also be checking out Google's flutter too, which is a newer cross-platform option (again assuming no web needed).
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I am looking into the possibility of doing some mobile app development, firstly for Iphone and then later possibly for Windows phone and Android. I am familiar with .NET development and am wondering about what options to consider. I have read a little about Mono Touch and Phone Gap, what are the advantages and disadvantages of these and are there any other better options anyone could recommend? Or is it really necessary to learn Objective C for Iphone, and Silverlight for Windows phone etc?
Have a look at Appcelerator Titanium. Its a pretty decent cross platform app creator for iPhone and Android.
However, the problem is that Android and iPhone (and Windows Phone) are different platforms. For instance, iPhone has navigation controllers with title bars and Android doesn't. Thus you can put buttons in the title bar on iPhone, but not on Android. Eventually you get to the point where you're writing specific code for each platform, even though you're supposed to be writing once and deploying to many places.
Personally the overlap isn't worth the time saved. It makes the code base much more complicated and less maintainable. Plus you can't do as much with those cross platform tools as you can if you do everything natively.
Lastly, who doesn't want to learn a new skill? Why do something the easy/quick way when you could learn how to make iphone, android and windows phone apps natively, which may help you in the future with freelance work or indeed your career.
Here's a tutorial on setting up a cross-platform solution in C# and Xamarin tools. It doesn't cover ios, but it's extendable in that direction.
How to Create a Cross-Platform Solution for Android, WP8 and WinRT
Hope that helps.
PhoneGap or Titanium is good platform for fast development very simple applications. But when you need to go deeper, you will find a lot of pitfalls. And the most important that all this cross-platformed frameworks, based on JavaScript, that they are VERY SLOW!
So for my opinion, the best solution for development cross-platform application is Mono (MonoTouch and MonoDroid). With Mono, you can develop for iOS, Android and WP7. And you business and data-logic remains unchanged. UI-layer you have to write different for each platform. But I think it's even better, because each platform has its own approach. In addition, you get really fast speed with Mono, as it is translated into native code.
But it is not free.
Using a cross platform framework will make your app look non-native on every device, this can be ok if you want to brand your whole app.
This will mean you can only make a standard app and won't be able to take advantage of the nice stuff each os has to provide.
I would go for iPhone -> Android -> Web Mobile -> Windows Phone. In that order.
Porting from iphone to Android has it's caveats but is pretty straight forward as similar design patterns were used. Windows Phone is a bit more industrial in it's design and you might not be able to get your head round the differences.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
Currently, I plan to port a Java desktop application, to the Android platform. Besides official Android SDK, I also take a look on, as it will be a plus, if it is able to run in iphone with minimal effort.
http://www.rhomobile.com/
http://www.phonegap.com/
appcelerator.com
Those cross platform frameworks seem nice. However, I was wondering, what are the limitation on those frameworks?
Will they still have the same look and feel as native Android application? (Or a native iPhone application)
Is there any difference in the speed and responsiveness of the application?
Are they able to provide same set of GUI components as in Android SDK? (Or iphone's)
Limitation access to I/O, network resource, hardware?
Ability to use threading?
From my experience (my background being native mobile app development), we get a lot more control with native apps vs framework based apps. That advantage has greatly reduced in android and iphone platforms, however there are a few other things to condsider:
If it is a one off app then you are
better off working with the
frameworks you mentioned, they
provide all the features you asked
about and for a beginner, are a bit
faster to develop.
If you are going to do multiple apps
then it makes sense to have a custom
framework for your needs. In this
case you can reuse parts of your
Java desktop app and absorb them
into your framework. You will
probably need to create iphone and
android/java versions.
If you create your own framework,
you can also incorporate other
software development best practices
like CI more easily when compared to
off the shelf frameworks.
The UI components are different for
Android and iphone and you are
better off having them different as
they have quite different
sensibilities and interaction. So it
may not be a good idea to aim for
one to one mapping.
Speed, performance etc are not an
issue, same for threads support.
Hope these points help in your decision making process.
This post will be immensely useful for you :)
Comparison between Corona, Phonegap, Titanium
As for threading - since both PhoneGap and Titanium (I cannot speak to RhoMobile) allow you to hook into native code from JavaScript (and the reverse) I see no reason why you cannot multi-thread an application using one of these technologies.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I want to build a mobile/tablet application whose core feature will be taking pictures with the camera , viewing pictures and receiving notifications. Also I want to target iphone, ipad and android platforms.
Titanium appcelerator piqued my interest because of its cross platform appeal. However I am concerned because I've read mixed reviews on SO and other sites. The things that worry me are:
Subpar android support
Camera support not fully capable (e.g ios 4.1 HDR capability)
Camera support buggy
The nightmare scenario for me would be to invest time in titanium only to discover later on that its a major PITA and drop it and go "native"
Please share your thoughts and experiences.
I chose Titanium for a serious application, although one that does not use the camera. I think there are a variety of things that could play into your decision...
If your app intends to do "fancy" stuff with the camera, or some real heavy image processing and so on, you're likely better off going native. If on the other hand, you just want to have it take pictures, and then those will be used as-is, or sent to a server, or what not, then Titanium should work just fine. Titanium does have some processing and image manipulation things, but as others have said, if you really want to take advantage of the device's hardware, you probably want to go full native.
It should also be noted, and Appcelerator says this as well, that with a Titanium app, you won't just write a single app that works as-is on all devices. You will need to taylor the UI to each device (or class of device, i.e. iPhone, Android), because they have different UI's, and different standard UI flows and so on.
But, one of the potential advantages to Titanium is if you don't know Objective-C and/or Java, and you do know JavaScript (and in my case, I'm actually using Coffeescript :). Or, if you would enjoy your work much more writing JS than ObjC/Java. This was one of the main reasons for me. I have done some ObjC dev in the past, and don't even mind it, but this project I'm doing is on a very very aggressive schedule, and it was just going to be far more effective for me to use Titanium. I was able to get set up and build an app extremely quickly, and I am not spending any time having to become more deeply familiar with the programming language I'm using, memory management bits (you can't fully ignore this with Titanium, but essentially they're doing it for you). Based on the folks I've talked to, and how much time they spend with memory management, Interface Builder issues (this is mostly the ease of forgetting to setup connections or hook various things up, IB is actually a pretty great tool), and so on, I'm quite glad I'm using Titanium.
While I expect to do an Android version at some point, it's not a priority. But, I'm glad to know that a large chunk of my app code will be re-usable, tested, etc. and that I'll wind up mostly just building/revamping the UI for Android, not rewriting networking code, data management, and so on. Android support will be much better (supposedly) in Titanium 1.5, but you may want to wait for that release to evaluate Android if that's a priority.
Finally, Titanium does have a "module" system, that allows you to wrap native code, exposing it as a JavaScript interface in Titanium. We are about to leverage this to integrate a third party library, and at least for what we need, it looks very easy to use, and has given me a little more confidence that if some particular native feature we need access to comes up, that we'd have a decent chance of integrating that while still using Titanium, but I think it would depend on what the particular native functionality was.
Good luck and enjoy building a mobile app, it's pretty fun!
We have been using Titanium in one of our projects for around 2 months, and frankly speaking our experience with Titanium is too bad.
As per my opinion, below are some major drawbacks of Titanium:
1) First thing is you will not get debugging support at all (We can understand how debugging require in any of the project and in any of the technologies).
2) Titanium is NOT fully supporting all the features of Android/iPhone; beyond some level it will not give you support.
3) Comparing with Android/iPhone SDK, developers will get very less amount of help from the internet and API library (Titanium provides the API library help file).
These are the general issues that end developers face while dealing with Titanium and I suppose sometimes it will be tedious and frustrating work for them.
If the functionality of your application is somewhat like displaying data from the web (like many news, media type apps) then Titanium is the suitable option; otherwise not.
The Android support is not near as good as it is for the iPhone. If you were to just say iPhone I would say you would have luck using Titanium. However, I think trying to build one code base in Appcelerator and also use in your Android environment may not be the best experience.
That said, IMO doing Android / Java code is much easier than doing Objective C / iPhone work.
So worst case I would consider using Titanium for your iPhone version & do Android in Java.
You can give it a shot doing them both in Titanium, but worst case code the Java version.
I just hate objective C and the 'native' Apple development environment so much.
I would recommend against using a cross-platform toolkit when interacting with device hardware is one of the key requirements of your application. I haven't worked with Titanium before, but I find it hard to believe that they will give you the same level of hardware access that you get with native frameworks.
In particular, iOS 4.0 added a mess of new capabilities regarding the camera, including live video frame processing through AVFoundation, and I find it hard to believe that a third-party framework will keep up as these platforms advance. To be honest, it's pretty easy to write an application that interacts with the camera on the iPhone nowadays (count the number of them on the App Store as an indicator of this). I wrote a live camera frame processing application in about six hours the other day.
I can't speak for Android, but I imagine dealing with cameras is fairly trivial using the native APIs there as well.
You're also going to find performance testing and debugging your application to be far easier using the native tools than those supplied through a third party. In particular, Apple's Instruments is an extremely powerful, yet easy to work with, application for tracking down CPU and memory issues within your application.
There's also the community aspect. You'll find far, far more people working on Android and Cocoa Touch than on Titanium (just look at the numbers of questions in the various tags on Stack Overflow to see that). This means many more tutorials and a whole lot more sample code that you can use.
The time you'll spend getting your iPhone and Android build environments set up, and submitting to both stores, will be the same no matter if you go with a native environment or with Titanium.
In the end, even with learning both platforms, I think you'll come out ahead by avoiding a cross-platform solution. Trust me, I've tried to do cross-platform development before for other projects and ended up with lowest-common-denominator products that took much longer to write.
I've developed an Appcelerator-based camera application and was very pleased with it. I think some of the negative reviews come from the fact that it's a bit hard to get set up (more due to Apple's crazy developer registration process).
Once I got started, it was easy to do things like overlays on top of the camera screen. I was really expecting difficulty with that part, but it worked well.
I have spoken with the Appcelerator team in the past, and they are a great group to work with. I've seen them be responsive to other user issues, and I'd trust that if I ran across a real bug, they would address it quickly.
A little late, but my two cents...
I honestly believe you can very quickly prototype an application with Titanium Appcelerator and focus on the critical feature sets to determine if it is the appropriate tool for you.
All developers have there opinions and experience(s) which influence there comments; developers have different ways of learning and different levels of productivity... In the end, it comes down to how are you most productive with the tools available to you.
Since you are stating from the start that you want to deliver a solution an multiple platforms, I think it would be a poor decision on your part to not even spend a week or two investigating cross-platform frameworks and then making the decision based on your personal experience.
There is Titanium Appcelerator and there is also PhoneGap, where PhoneGap might help you is that there is the ability to extend/enhance the underlying framework through writing plugins (I wrote one for iphone ) and there is an android one on my blog also... this can fill missing gaps for you when you move across platforms.
Also since the UI in a phone gap solution is HTML5 Webkit based, it can give you a consistent look and feel across you devices if you like. Frameworks like jQTouch and JQuery Mobile are being used for UX with PhoneGap Application
I reviewed negative feedback for Titanium Appcelerator but I tottaly agree with Aaron Saunders that if you use PhongeGap Development is support HTML5 which can getting easy to make apps for iPhone, iPad and Android mobile.
Has anyone highlighted the cost off titanium.
I was contacted by them today and if you are more than a one man band you have to sign up for a partnership program else you are held liable for breech of contract if you release the app.
The partnership program is £5000 which is far to much for us as a start up company when it's our first application, we are currently looking for a different option now.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'd like to start developing for iPhone or Android in my spare time, as a chance to learn something new but also hoping make some extra income.
I'm not sure which is the best development for me to start developing on. I own an iPhone, but I don't have a Mac (which I would need to use the SDK), plus with the iPhone I believe there's an annual charge to develop for it.
As far as I understand Android, the SDK is free and can be used on Windows.
Professionally I develop using .net and C#, which sounds more similar to the Java based Android enviroment.
Another negative I perceive against iPhone is it has a much more crowded App Store, I would think apps get better exposure on Android?
Both can be good/bad for various reasons.
iPhone - good
Great SDK & get to use Xcode which rocks
Well documented online (many tutorials)
Large deployed base of devices
Well established app store
Get to learn Objective (I find it a fun language)
Most people tend to upgrade their iPhone OS so you can get away with only developing for the latest and greatest
iPhone - bad
Crowded app store, very hard to break through (the "gold mine" is a myth)
App Store apps need to be approved by Apple, with some often rejected for dubious reasons
Have to buy a Mac (not necessarily a bad thing)
Have to learn Objective C (can be a hassle)
Have to pay $99/year to publish apps
Can only multitask on iPhone 4.0+. Hardware restrictions will mean many devices will not be able to use this however
Android - good
No restrictions on apps that you can develop/publish
Wide deployment of devices and growing - set to overtake iPhone soon
Can multitask on Android
Get to code in Java which is widely known
Some of the SDK tools integration with Eclipse is nice (although still needs a bit more work)
Only have to pay $25 to publish apps (one off fee)
Can develop on any platform (Mac/Windows/Linux)
Great Android devices coming out this year - platform could really take off.
Nice XML way of laying out views. While not as flash-looking as the iPhone Interface Builder, it is very powerful.
Get to work in Eclipse (which some people think rocks)
Android - bad
Have to support wide variety of screen sizes and devices
Many people still using old versions of Android OS (1.5) so you'll probably have to support those if you want to reach that market
SDK is not as polished as iPhone SDK
Android Market is not as popular as iPhone App Store - hit apps will not make as much $$$
All in all, starting with whichever is fine in my opinion, especially as now Android is gaining ground. Given your background I'd say you should go for Android.
In my honest opinion - I see the recent changes in iPhone SDK a kick in the teeth. I'm an Adobe person and you would assume, an infinite number of developers begin building applications in CS5 would be great for you App Store? Apparently Apple do not agree.
However - if your looking for exposure, getting an App into the App Store will yield more results if you build a quality app. As the Android store hasn't got a footing yet (if they'll ever be one), all marketing is on your own head.
I recently defunct Apple as they force us developers to 'be them' and I don't agree with their ethos.
That said, having programmed for both, The Android is slightly tricker to get installed and took a very long time to sort itself out. Although the instructions are very good and the examples are well defined.
If you've got a mac, installing the iPhone SDK is a sinch and you ready to build apps. It does cost £50 for the developer connection and yes android is free. [Correction - this may cost a one of fee of $25]
If you are building an iPhone app thats heading for the wild, you will need the connection (this can take up to 3 weeks in my experience) so you can test it on your iPhone.
And you'll definitely need to purchase a Mac.
--
With Android, its java, and with the newest rendition, a very good API to work with. As an additional bonus its build upon Eclipse, so it'll take you seconds to understand whats going on.
--
As a final thought - being an Actionscript/JS developer, the transition to Java was a logical and simple step and (please don't shoot me if you don't agree) Objective C is a train wreck of two different language styles. I found it very very difficult.
but don't just take my word for it, definitely try them both, as I see Android emerging market just an ice berg right now, but Apples is established.
Two disadvantages of iPhone/iPad apps ecosystem are:
Apple test & accept apps before puts them into AppStore (this take time and acceptance depends on Apple current policy) -- Google seem not to care about that so much.
AppStore it's the only official place for iPhone apps -- on Android you can install apps from unsafe source (i.e. website or email attachment) -- so you can provide and charge for app in various ways.
You say you want to (a) learn something new and (b) make some extra income.
As far as (a) goes, your barriers to entry with Android are probably lower. You can develop on Windows, Linux, or Mac; the sdk is free, and there are no charges. Android development is usually done in Java, which is not that different to the c# you already know. So, I'd say get Reto Maier's book and give Android a try. At some point you'll need an Android phone, but you can get some way using the emulator. You won't have to buy a mac or pay for a developer licence.
Once you're familiar with developing for a mobile platform you'll have a better idea of what it takes to build apps that other people will want to use, and maybe even pay for. At that point you can evaluate the platforms from the point-of-view of (b) and decide which one to pursue. If you end-up buying a mac and paying for a development licence then at least you'll be making an informed decision. But get some experience first.
Like you, I'm a c# dev. I've done some Android development for my own amusement, and (for what its worth) my personal opinion is that its a superior platform in comparison to the iphone because it is more open (technologically and commercially). I believe Android will fairly soon either achieve partity with, or even overtake, the iphone.
Try Android, get some mobile experience, then decide.
MonoDroid for Android is in beta, which means you'll be able to write Android apps with C#. You can sign up for the beta here.
iPhones are getting more and more restrictive. Android is opening up. Android is also shipping more phones than iPhone. You decide.
take a look at this book , it's a good reference to decide the 3th way... HTML, javascript & CSS for iPhone and Android at same time, based on webkit, using jQTouch and
PhoneGap . You can see on the first chapter the pros and cons.
I would suggest getting your hands on the latest iPhone SDK and a Mac from a friend before taking the plunge unless the $600 minimum investment for a macmini(what I did in my case) doesn't bother you.
You could try installing GNUstep for Windows and messing with Objective-C without buying a Mac to check out the language but it's not the same without XCode and Interface Builder,SDK,etc.
The reason I say this is because I'm currently taking an iPhone class and just learning Objective-C is a lot larger learning curve than I thought it would be and eating up a lot more of my time than I cared for.
Unlike C# or Java you have to manually keep track of memory management which is really annoying and a hassle not to mention Cocoa Touch, which is sort of like .Net or Java classes for Objective-C; another big learning curve! Bottom line neglecting the fact that it is a mix of SmallTalk and C and looks horrible if you can get over that it is still hard and easy to crash your program.
Forget to hook up your outlooks correctly in Inteface Builder?
CRASH!
Forget to use an # for an NSSTring due to the loose type checking?
CRASH!
I'm just saying that you'd probably be more productive and actually get applications completed in your spare time going the Android more familiar Java language route vs the Apple route. Also, I'm not sure how big Android is on the whole MVC concept, but it's everywhere in the iPhone SDK since Cocoa uses the Model-View-Controller (MVC) design pattern throughout.
On the other hand, if you like a challenge or learning the Apple route is the way to go and if you are good you app will sell and you will make money. Like I said there is a ton to learn with the iPhone before you can even start thinking of selling the next killer app LOL.
p.s. Oh and unless you want to test something on actual hardware that doesn't work in the iPhone/iPad simulator or actually upload an app to the store you don't need to pay the $99 fee to develop.
If you're a C# developer, and you're looking to begin iOS development, then you owe it to yourself to read Josh Smith's iOS Programming for .NET Developers.
It's exactly what you're looking for.