Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Well I'd like to create apps for the iPhone, starting out with really really basic stuff and working up, but I don't have a Mac at the moment (well I do but it's a powerPC ibook G4, which you can't develop on) and before I invest I'd like to learn how to create apps.
I also read an article in a newspaper about how a guy starting creating apps (before Apple launched the app store) on his PC for the jailbroken iphones, then when Apple launched the app store he switched to created "legal" apps. (the article said he carried on using his PC but I'm not sure that thats true).
I'd like to do a similar thing, but I don't care about releasing any app to the jail broken iphones, I just want to learn on a PC and then I can decide to sell my ibook and save up for a Mac.
But I don't want to go out buy a Mac (expensive) and then find it's to hard for me to understand and have wasted £500 or whatever.
Free Stanford iPhone Dev Course
The 10-week course, iPhone Application Programming, is a hot ticket. It begins today and videos of the classes will be posted at Stanford on iTunes U two days after each class meeting (http://itunes.stanford.edu). Copies of the slides shown in class will be available there as well.
http://news.stanford.edu/news/2009/april1/free-iphone-software-development-course-apple-040109.html
(channeling for qux who pointed this out in a comment)
My sincere recommendation is to spend some time with XCode on your current iBook, and get comfortable with some Mac development in general.
iPhone and Mac development use many similar libraries (although obviously UI is completely different), and if you're well-versed in one, getting up to speed on the other isn't tremendously difficult.
This will let you know whether to invest in an Intel-based Mac and continue onto iPhone development.
XCode should have come with your Mac on the installation discs. You'll need to use that copy, because the one at http://developer.apple.com is Intel-only.
For getting started books, I recommend Aaron Hillegass's excellent Cocoa Programming for Mac OS X 3rd Edition.
If you go with sberry2A's recommendation of a hackintosh, then you can jump right into iPhone development, and can get the dev tools from Apple. Going this route, I still recommend the Hillegass book, and then supplement that with iPhone SDK Application Development by Jonathan Zdziarski.
If you're going to be focused primarily on Games, and already are fairly comfortable with C, instead of either of the above books, go directly to iPhone Game Development by Paul Zirkle and Joe Hogue. (I'm currently working through this one.)
As far as I know, prior to iPhone SDK 3.0, the SDK's were (inofficially) compatible with PowerPC. See iPhone SDK on PowerPC?.
As you already have an iBook G4, you could as well put Xcode on it (you can get the Mac SDKs - even for PowerPC - for free from Apple). Then try to write some Mac apps, as the Mac and iPhone APIs are very similar. If you like one of them, you'll most probably be happy with the other, too.
Already asked before:
https://stackoverflow.com/questions/718401/develop-iphone-apps-on-a-non-mac-system
iPhone development on Windows
Basically, you can develop on Windows, but it's a slow pain in the ass.
See e.g. here: http://www.chemlab.org/2009/02/20/scrap-the-mac-leave-the-os and detailed guide on how to do it here: How can I develop for iPhone using a Windows development machine?
Related
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 does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I'm a web developer and I'm getting envious of all the cool iPhone apps. I know nothing about C or what ever language they use to make iPhone apps. I really have no idea where to start. What do I need to do? Should I take a class, buy a book? I have a pretty good grasp on programing, I do tons of HTML, CSS and Javascript development and some PHP and Action Scripting. I'm not very good with Object Oriented Programing but I think I could pick it up if I used it more. I love video tutorials like lynda.com or net.tutsplus.com. I learn best buy jumping in and getting my hands dirty.
By far the best book I read on beginning iPhone development is called just that, Beginning iPhone Development. Very easy to read and takes you from a total beginner to reasonably competent. Check it out: http://apress.com/book/view/1430216263
I should also mention that every chapter has you jumping in and doing practical work. Most of the time you enter some code, get it running, and then go through it to understand it.
I haven't really looked into iPhone development at all. But as far as I know you can create a normal web app that can be accessed from the phone.
So depending on what you want to do, you could use your existing skills to make web apps specifically targeted at the iPhone.
Otherwise, if you want to develop an app, then Objective-C is the language the iPhone uses.
As far as I know you have to have to develop any apps on a Mac if you want them to go into the apple store. There are possibly a few other restrictions as well that you would have to look into if you want to publish the app that way.
You may start by some online videos as you love video tutorials, the Stanford course is one of the best.
Then you can pick up a book or two.
If you still feel comfortable after that, you may start a real project and ask questions on StackOverflow along the journey ;-)
Enjoy~
You sound just like me!
The first step is to know what iPhone apps are programmed in, which is Objective-C, an object-oriented version of C. Basically, Objective-C is how you write for the Cocoa API (which is the preferred API for all things OS X).
Personally, I say write really great web apps that have style/scripting for when the user is viewing from their iPhone. Here are some sites with that in mind:
iui - css for iPhones
iwebkit - general framework
PastryKit - js framework for iphones
Learning iPhone programming and Objective-C programming at the same time will be daunting. If you're serious about getting into this, I recommend you start by learning C on the command-line, then advance to Objective-C GUI apps on the desktop, then eventually move to the iPhone.
If you want to short-cut the process, there are plenty of join-the-dots tutorials online and a whole bunch of iPhone programming books targeted at different levels of experience, but you'll need to be pretty tenacious; the online stuff is of extremely variable quality and there will be a lot of cursing and hair-pulling. I have almost 20 years of C and C++ under my belt, but I still lost a lot of sleep getting up to speed.
Don't be discouraged, though; it is extremely gratifying to finally get something up on the app store and see people enjoying it.
If you really want to know how to make a good iPhone app, don't take shortcuts. Leave all of the intermediate products out and forget about just wrapping a website up in a UIWebView. Learning how to do it the right way will make you a better, more well-rounded programmer.
Since you don't know much C or Objective-C, I'd recommend reading Programming in Objective-C 2.0 by Stephen Kochan. It's a great book for going from no C experience to learning Objective-C. It also includes some iPhone-specific stuff.
Check out Jonathan Starks book on iphone apps. He shows how to use HTML, CSS, and Javascript to make iphone apps. You can distribute them from a server or use phonegap to convert them to native apps (legally!). This is probably the first direction to look into to leverage your existing skills.
http://building-iphone-apps.labs.oreilly.com/
Like so many has written already. Start by learning Objective C. Here is a great list of resources updated regularly. The comments are really helpful.
http://iphoneresources.aribraginsky.com/
The resources covers both Object-C and iPhone programming. Sections can be found various topics like game programming, twitter, etc.
If you are serious about this, your first step is to buy an Intel based Macintosh. They all come with Xcode (the developer tool) on a DVD.
Then you can seriously think about learning Objective-C and there are many good suggestions about that already here.
Stanford has their iPhone development courses on iTunesU but if you aren't good at Object Oriented programming then you are going to struggle with Obj-C.
Personally I would suggest learning Java to pick up the OO fundamentals first and then looking into Obj-C programming.
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 3 years ago.
Improve this question
[2015 update: I think it's safe to say that Flash is rapidly dying. Don't go there. Gotta say though, during its brief moment to shine, Flex was actually a really lovely datavis technique.]
I'm interested in developing for the iPad and iPhone, but I'd prefer not to learn Apple's whole development stack (and good golly, I sure don't want to go back to manual memory management). Oh, sure, I could learn it, but I don't have that level of commitment to the environment at this point. I've got professional experience with Flex already, so I'm intrigued by Adobe's move to make Flash/Flex compile to the iPhone and iPad. My question is: how promising of a development path will Adobe's Slider be? Are we likely to see Slider publicly available in a reasonable timeframe (Adobe: "An early mobile branch of the Flex framework is expected to be available in 2010")? Are we likely to see reasonable performance? Are there development hurdles that haven't become clear yet? Heck, is it all just vaporware? There's pretty limited information available so far, as far as I've seen, but I'm interested in people's predictions, even if they're speculative.
Hopefully you'll see some info on Slider soon that will give you a better sense of the timeframe. Flex 4 will be released soon and once that happens you should start to hear more concrete info about Slider.
One thing to keep in mind is that Slider will be based on the Flex 4 architecture. To give you an idea of how that performs you can check out James Ward's blog post - http://www.jamesward.com/2010/02/21/flex-performance-on-mobile-devices/ - he's got a couple of videos that show a Flex 4 list running on a Nexus One.
This isn't iPad/iPhone, and Flex is NOT something Adobe recommends for mobile, but this basic example works pretty well. And it should give you an idea of how Slider might look/behave.
=Ryan
ryan#adobe.com
Interestingly, Apple's new developer agreement calls into question whether apps built with Flash/Flex will be allowed:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
Adobe's cross-compilation tech is not vaporware (for Flash, anyways-- haven't seen as much re: Flex). And they would be unlikely to invest so much in it if they thought it would get torpedoed on day one. That said, you must draw your own conclusions about your long-term reliance on it, and your interest in building on a non-native toolchain, both in terms of what you can get out of the environment, and the support channels you'll need to use (e.g. not Apple) when stuff doesn't work.
Some people seem to be successfully using Mono touch, which shares (some) similarities.
There are two issues with this:
Steve Jobs says he isn't going to support Flash on iPhone or iPad.
Adobe's next rev is going to allow you to develop in Flex and port to iPhone app format.
Do the math.
If you want to start iPhone, iPa or Mac OSX development, I'd suggest learning Objective-C. It'll probably take less time than waiting for (official) Flash support on those devices ...
Take it the other way around, would you use Objective-C to develop a Flash or a Flex app?
Flex can now compile iOS applications (and so run on the ipad and iphone)
http://gregsramblings.com/2011/06/20/finally-its-here-flex-on-ios-android-and-blackberry-playbook/
http://gregsramblings.com/2011/04/26/convincing-developers-that-adobe-flex-rocks-on-android-ios-and-playbook/
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 5 years ago.
Improve this question
MonoTouch seems like a great platform for iPhone development, but I'm concerned about deploying it to the Apple Store. Are there any examples of applications built with it that are currently available on iTunes?
We're starting a new project for the iPhone, and keeping the entire stack in C# would be great, but we don't want to incur the risk of being turned down from the Apple store because of MonoTouch.
I've read about several games that currently use mono (not MonoTouch) for 3D graphics, but couldn't find anything about MonoTouch.
Tapping this out on my phone, so going to be a little terse - apologies for that.
Anyway:
- As said in a previous answer, there have been MonoTouch apps released to the App Store. Whether it's two or a bajillion doesn't matter so much. The difference between one and zero is infinite - the answer is unequivocally: Yes, Apple will approve MonoTouch apps.
- MonoTouch plays by Apple's rules. It spits out native bits. There's no interpretation of code going on, nor is there any JITting. Your MonoTouch app is a bundle like any other, and it contains a native binary like any other.
- MonoTouch apps are larger than they would be if they were written with Apple's stack. This is because your MonoTouch app relies on a subset of the Mono/.Net framework. In that respect, though, once you get down to what ships, there's nothing especially different about a MonoTouch app. I worked at a company where we built our apps (developed with Apple's stack) against our custom framework. It increased the size of our apps, but it also cut way down on production time (and that's always the trade-off, right?). Plus, the size of the app bundle just after compilation can be deceptive. Because bundles are zipped for the App Store, the size decreases dramatically - you can easily write a MonoTouch app that falls well within the acceptable size limit for apps delivered OTA (I bring this up because it's a question MT n0obs (rightly) tend to ask). So, Apple doesn't have any real reason to reject based on size.
- Whether it's MonoTouch or a custom in-house framework like the one I used to work on/with, the MonoTouch stuff, when shipped with your app, is just another framework that could've been written in Objective-C.
- If you're concerned about configuring your app for distribution using the entire MonoTouch stack and how that might affect your chances of approval, you can tell MonoDevelop (or the mtouch utility from the command-line) to output an Xcode project. You'll see that your code has been transformed - you'll be looking at native assembly (not some flavor of an IL). You can build and run your MonoTouch produced app from right within Xcode, by which time MonoTouch is basically out of the picture (except as a framework you're building against (like MapKit, for example)).
For some reason, all of this bothers a very small, but vocal, subset of iPhone devs who, for whatever reason, can't stand the idea of people they don't know using a different tool to build apps. But their hateage doesn't change the simple fact that Apple has accepted MonoTouch apps (and Unity apps long before that).
The biggest reason you're going to see for MT apps being rejected is that MT devs, in my experience (I've been talking to quite a few - after giving some talks, posting to forums, mailing lists, here...), is they they haven't yet learned how to develop an iPhone app. That's something iPhone devs must do regarldess of how they write their apps. MonoTouch isn't the obstacle - it's knowing, for example, that Apple wants your app to look a certain way and to work in a certain way - it should look and feel and behave like other (good) iPhone apps, and shouldn't be among the examples of attempts to write desktop apps for a phone (which is where your average dev makes his first mistake when transitioning to mobile development).
Ultimately, your tool of choice isn't going to matter as long as it creates bits that play by Apple's rules (like MonoTouch). The real obstacle is learning the iPhone Way of app design.
.Net application devs, whether on Windows, Windows Mobile, or wherever Mono (not MonoTouch) runs, are accustomed to developing apps according to their own tastes. That doesn't fly in the iPhone world.
You can safely go with MonoTouch. As has been shown, Apple will approve MT apps.
The thing you really need to do (again, regardless of which dev stack you choose) is read Apple's docs on iPhone app design and their guidelines. There's a huge crowd of devs out their attributing their app rejections to Apple being evil (or whatever - uninformed excuses, basically), when the truth is that their apps are garbage and it's clear the devs didn't play by the rules (or even bother to read the rules).
In the end, in many cases, you'll write far less code when using MonoTouch, and the cost for that is a larger app bundle (which, as I said, will come out very reasonably sized after it's been zipped for distribution).
That's not much of an issue. With 3g, users don't sweat downloading 2-3MB sized apps. If it's small enough to send OTA, everything's fine. And in cases where your app goes over the limit, it's likely embedded resources (media - images, videos, etc. - that's how bundles typically swell to wifi-only sizes), and that's something Objective-C devs have to deal with, too, so that's not a MonoTouch problem.
So, ignore the haters (who haven't even tried MonoTouch or bothered to learn how it works), and rest assured that, as long as your app conforms to Apple's guidelines, there's no reason for them to reject it. It doesn't mean your app is guaranteed acceptance as long as you design it correctly (plenty of apps get rejected for no apparent reason), but you can consider yourself, more or less, to be on equal footing with devs using Apple's tools.
Hope this helps :)
The MonoTouch community is maintaining a list of MonoTouch applications that are available today on the Apple Store and that have been written using MonoTouch.
The unity game developement platform is using the same mono touch code base for C# support (and have contributed to the project).
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 7 years ago.
Improve this question
I have found the "Getting Started" documents for developing apps on iPhone.
I wanted the community's opinion on what I should know/learn (in terms of languages or concepts)?
How long would it take for a moderate programmer to learn and build an app that manages a list, connects to certain websites, etc?
How to get an app I made onto the iPhone? Just ZIP then install with .ipa file?
I wanted the community's opinion on what I should know/learn (in terms of
languages or concepts)?
You will be using Objective-C and Cocoa. These are fairly strange concepts to crasp if you have not done MAC programming before, but after a short while you will probably fall in love with them. The most important concept to remember with iPhone development is memory management as the device has no concept of garbage collection.
How long would it take for a moderate programmer to learn and build
an app that manages a list, connects
to certain websites, etc?
Not too long. There are a multitude of example applications on the internet, and many helpful folk on stackoverflow.com
How to get an app I made onto the iPhone? Just ZIP then install with
.ipa file?
You will need to download the SDK, create an app using xcode on the mac (or similar environment for windows if there is one) - you can test with simulator without giving apple anything, but in order to legitimately test on device you need to become an apple developer.
However If you jailbreak your device, you will be able to follow one of several methods to get your application on the iphone bypassing apples restrictions.
The whole iPhone UI development (UITableView etc) is based around the MVC (Model-View-Controller) pattern, so a good understanding of that is vital.
Memory management is also vital and can be a little cumbersome to start off with. I have not long started so can not give you a good description here without making a fool of myself :). Apple Memory Management
Finally the development environment can be a little wierd to start off with. Especially hooking up the view controller and interface elements. So check that out.
Then its basically looking through the tutorials on the iPhone developer website and the internet to learn the intracacies of the different UI elements and controllers (tables, textboxes etc).
You will need to pay for the iPhone Developer program to legally use your iPhone to debug your applications (although the Xcode dev environment comes with a simulator). Submitting the application to the app store allows access by everyone. Full details for doing this are available after paying your money. There are other ways you can get apps on the iPhone but I will not provide details for doing that - search the internet.
I would say that looking through the documentation and following tutorials will get you far enough to start building applications. This should not take to long. A good book may also help you out here, try the iPhone Developers Cookbook, which gives good well discussed and broken down examples about specific issues and broader coverage of things like tables etc.
Objective-C. Pay close attention to memory management, i.e., retain, release and autorelease.
Took me about a month (part time) to get something that pretty much worked. And then another month to refactor after learning what I'd done wrong the first time. This was while the NDA was in place so it would probably be easier now.
You need to join the iPhone Developer Program. Installing a development app is just a matter of running from XCode once you have you certificates sorted. (Check the iTunes Connect documentations. It's pretty good.)
Installing on someone elses iPhone is a matter of figuring out ad-hoc deployment (hard) or uploading to iTunes (easy).
First of all: buy a mac if you don't have one already, the windows tooling pipeline is basically non-existant. And trying to run OSX on non-apple harware is illegal in most situations.
Download the iPhone SDK. http://developer.apple.com/iphone/ should have everything you need.
Objective-C is a little bit on the strange side but a moderate programmer should be able to pick it up quite quickly.
Installation: i have no idea sorry...use the app store ;)
Learn objective C and work with Cocoa. There are far more examples of that floating around than iPhone code. Depending on what environment you are used too, Xcode and the experience of developing for the iPHone can be quite a change so get ready to buy some books and spend lots of time scratching your head!
Learn how to navigate Apple's docs.
For example UIView Class Reference.
Took me a little while to get savvy. XCode also has an excellent documentation browser integrated into the IDE. Once you can translate what the docs are telling you into code, the whole API opens up.
Use the Research Assistant in XCode. (Under Help Menu) That thing rocks my world. Highlight a class like ABRecordRef and it will give you a quick synopsis of what it is and how to use it, with links to the reference docs.
The one bad thing about Apple's docs is that they don't have clear examples of how to call a method in the discussion of the method. This is a glaring oversight, IMO. So many time I just wish there was a simple example for how to use something and I wind up going to Google for it.
The above information is quite good, but I'd add that getting familiar with the documentation within XCode is very valuable. This means you need to go to the DOC SETS part of the Developer Documentation window and make sure you have the documentation for the iPhone OS you're coding for. I spent a bunch of time writing code that depended on methods in NSObject that are available in Cocoa but not on the iPhone OS.