14 ms·
How to Write Good iOS Apps
- chromium 15y agoI lost it at "If you don't want to make your apps intuitive and easy to use, I hear OpenOffice is looking for some Java developers." Hilarious, great article.
- Apocryphon 15y agoI also enjoyed "...which is in turn rendered by OpenGL, which we don't care about because we don't hate ourselves."
- leon_ 15y agoThough it would be nice to have some understanding of OpenGL. It's gold worth if your UI runs sluggish and you try to fix that. Understanding how OpenGL handles things helps a lot.
- robjohnson 15y agoThe new big nerd ranch iOS guide 2 is phenomenal. I should have read it before writing my first 4 apps through trial and error.
- gte910h 15y agoI was looking for a modern training program (I started iOS App dev back before apple had a 3rd party lib) for a new guy, and this was my choice for best one. I also like the Xcode 4 book that recently came out.
- kenjackson 15y agoI've heard really good stuff about their in-person training too. I'm actually a big fan of the intensive in-person training. It's expensive, but I've found it to actually be worth it (for professional work at least).
- leon_ 15y ago> I should have read it before writing my first 4 apps through trial and error. I wouldn't say that. I consider learning by trial and error far more valuable than reading the best books on a topic. If you read the guide now you get more out of it. You have done the groundwork yourself - now it's time to hone your skills :)
- coreycollins 15y agoThe one thing I would recommend people do is not use Interface Designer. It bloats your code base and adds more complexity to the view hierarchy. It might be good to quickly mock-up a prototype, but not much else.
- judofyr 15y agoWhat's Interface Designer? Or do you mean Interface Builder?
- coreycollins 15y agoYep, sorry. Interface Builder. Shows how much I use it haha.
- Aqua_Geek 15y ago> It bloats your code base and adds more complexity to the view hierarchy. Care to be more specific?
- lurch_mojoff 15y agoWould you care to qualify that. In my experience it has been the exact opposite -- setting up your UI in Interface Builder has always reduced the amount of code necessary and has allowed quite complex view hierarchies to appear pretty much flat in code. And I'm taking about iOS UIs, for which a bunch of the code saving goodies of AppKit Interface Builder are not available -- things like Cocoa bindings and the new auto layout machinery in Lion.
- coreycollins 15y agoI find that added generated NIB files just dirty the code base. Of course this is just my preference. However, when I was a beginner, beginning to create more advanced views, I found it easier to programmably add them then to use Interface Builder. I like to be in control of my views and it helps me better visualize the view hierarchy. One example, was trying to create a UITabController with UINavigationController's for each tab. It can be done with Interface Builder, but it takes a lot of steps.
- innes 15y agoGo mess with MonoTouch or whatever if you want. Then go grab a fruit roll-up, think about what you did, and realize you should have just learned Objective-C. OK, but why? Seriously, it'll be worth it not to learn about manual memory management. I'm confused - MonoTouch presumably has garbage collection, but Objective-C lets you 'not learn about manual memory management'. What's the deal?
- ianbishop 15y agoSeriously, it'll be worth it not to learn about manual memory management. I believe he's making reference to the inclusion of automatic reference counting in iOS 5.
- AshFurrow 15y agoExactly. That's why you have to pay the $100 for the dev license - to get Xcode 4.2 beta.
- innes 15y agoAhah. So the mention of MonoTouch is a red-herring? Weird. EDIT: @tptacek What confused me is there's no reason given to avoid MonoTouch, so I latched onto the memory management comment, to try and make sense of the text.
- tptacek 15y agoNo, you're conflating two different points he's making. The MonoTouch jab isn't about memory management.
- deleted 15y ago[deleted]
- deleted 15y ago[deleted]
- wallflower 15y agoThe article was good in breadth but lacked depth. For deep-dives into the nitty gritty of Cocoa Touch, we've learned minute important details from digesting countless hours of WWDC videos that make all the difference. http://developer.apple.com/videos/wwdc/2011/ http://developer.apple.com/videos/wwdc/2011/ Especially the perennial classic, "Designing Apps with Scrollviews"
- adeelk 15y agoIn case anyone else is looking for “Designing Apps with Scroll Views”, it's actually from WWDC 2010: http://developer.apple.com/videos/wwdc/2010/ http://developer.apple.com/videos/wwdc/2010/
- gmac 15y agoDisappointingly obvious? In summary: learn, somehow, how the major APIs work, and then use them.
- DrJokepu 15y ago"Seriously, it'll be worth it not to learn about manual memory management." This is not true at all and it is a very dangerous suggestion. Automatic Reference Counting indeed makes memory management an awful lot simpler (often you don't have to do any explicit memory management at all with it) but you still need to learn about it and understand it, otherwise all sorts of bad things will happen like memory leaks due to circular references (delegates come to mind) and crashes due to the autorelease pool high-water mark eating up all the memory on iOS devices.
- AshFurrow 15y agoI think that if you master UIView and MVC as Apple prescribes it, you learn the conventions you need for proper memory management in ARC. Knowing the conventions is going to suffice. My argument wasn't to go and be naive about memory management. It was to not worry about it right now. Memory management makes the already steep learning curve of Objective-C even steeper, and can scare away newcomers.
- Hisoka 15y agoI spent the first month struggling with memory management, and kept being paranoid about "autorelease". Now, I ONLY use autorelease (well in 99% of cases). I don't get why so many people say be careful about autorelease. It makes things so much simpler and prevents mistakes from not releasing after allocating. I wish I learned this much earlier.
- DrJokepu 15y agoWell, be careful with that. A lot of properties in Cocoa and Cocoa Touch are not retained automatically (delegates, data sources and so on). If you just autorelease them you will have problems. The other reason people are careful about autoreleases is because, obviously, objects in the autorelease pool won't get deallocated until the pool is drained, which normally happens in the main application loop. Normally, this is not a problem, but if you do memory-intensive things (like dealing with images or other media) in a loop that means that you will consume a lot of memory before the autorelease pool gets drained. This might get other apps killed (on iOS 4+), and ultimately, yours too.
- bobbles 15y agoConsidering the attitude towards testing in this article.. How much would someone generally pay for say a testing consultant to test their app for them?
- ecito 15y agodepending on the size of the app, anywhere from $10 to $50 for a complete regression test and useful feedback on the app. I've never paid anyone though as it's easy to get friends to beta test
- stevederico 15y agoWhere can you get testing like this? Is there a site or service available?
- Apocryphon 15y agoSome good automation frameworks are FoneMonkey and KIF
- dpcan 15y agoWhatever. Life is way too short for some of us. Sign up for the Corona SDK and just have fun. Creating good apps has nothing to do with the tools you use, it is how you use them ... And more importantly than that, knowing how to design, polish, shine, and pay attention to detail is what makes a good app. Maybe adhering to some standard UI styles and layouts as well. EDIT: Wow, I'm bummed that this is getting down-voted. Maybe reply with WHY you are down-voting because developing GOOD apps in Corona is much easier than the route described by the author of this post.
- tomjen3 15y agoCorona is five different flavors of awesome. If you want to write 2d iphone apps with 2d physics. If you don't want to, you will have to look elsewhere though.
- dpcan 15y agoThat's not true. Now you can develop for Android AND iOS with Corona, plus, you can use their Native UI API to create actual apps with Corona, not just games: http://developer.anscamobile.com/content/native-ui http://developer.anscamobile.com/content/native-ui Check out their showcase: http://developer.anscamobile.com/showcase/ http://developer.anscamobile.com/showcase/ I'm not affiliated with Corona other than that I'm a subscriber and developer who uses Corona and loves the heck out of it.
- comex 15y agoNot to be too negative, but out of the 15 apps in the showcase, the only three that are not games and have a native looking UI are: Canyon County National Parks - looks good, but scrolling is noticeably non-native in several ways, and the app is oddly slow sometimes Drum Toy - takes forever to load, ugly sliders iSleepWell - UI is confusing and difficult to use (tap areas too small)
- sqrt17 15y ago> No, wait. Yes I am. I taught a course at my university on the topic. Teaching a course seems to be an excellent way to learn the basics. It does not make you an expert, though - that needs a couple years of practice.