Tuesday, April 10, 2012

What are some great iPhone questions for exercise?

In a small team where everyone is coding away on a project for a little while I want to encourage some different thinking to keep people increasing their iOS knowledge as well as to get a bit more variety in their daily activities. I'm not looking for interview questions involving manhole covers, nor very specific questions about whether drawRect: is part of UIView or UIViewController. I'm looking for questions more along the lines of UIImagePickerController, UIImage, Memory and More! - which has a lot of questions and a lot of great information. I voted it up.

I'm thinking of sending out one of these topics about every week and then having a discussion about it towards the end of the week with some examples. Maybe assign a short presentation on a rotating basis so someone gets the job of delivering a 10-minute presentation about the topic, prizes awarded etc. - then when some task comes up involving that topic we may not have an expert but we at least have someone who knows where to start looking for answers. And maybe is keen to find out more based on that exercise.

stackoverflow, while it has "great questions", has a lot that are not so great and these scroll by in huge numbers daily. In iPhone-tagged questions sorted by votes I'm seeing very few of the kind of questions I want. I'm going to look further at some of the top-ranked questions here of course but these are the questions people had to ask, not necessarily the questions that others might get the most benefit from.

There are lots of exercises for "programmers" around but those are not what is needed. I want this to be iPhone specific. We come from a range of backgrounds and are all decent programmers already.

So - what are some things about iPhone development that YOU think are worth knowing? Can those things be phrased in the form of a question that leads an enterprising programmer to a satisfying answer? What made you stop and think, saved you days, pushed you in another direction that was fun and/or profitable, increased your knowledge or just made you feel good for having discovered the answer?

Source: Tips4all


  1. Things every iOS developer should know about:

    Categories (how to extend existing classes with new
    Delegation pattern (how to implement your own delegates using either
    a formal or informal protocol)
    Blocks (often an improvement on delegation in case of
    asynchronous calls, also useful in many other ways)
    Passing NSErrors through indirection pointers.
    NSInvocationOperation / NSOperationQueue for easy / clean threading code.

    With the arrival of iOS 5 soon, one might want to learn about:

    Storyboarding with Xcode 4.2 / iOS SDK 5.0

  2. As a iPhone developer I will set these topics as a 10 minutes presentation.

    Beginner level, may be useless if you are already developed in Obj-C but quite useful to integrate a C++ dev in your team

    C++ vs Objective-C, Objective-C 2.0, Objective-C++
    Memory management in Obj-C (retain, release, autorelease)
    MVC design pattern
    IB outlets
    Design patterns in Obj-C
    Use Stack Overflow before Google (not specifically iOS)

    Medium/Advanced level

    ** Instruments ** (how to use it) (very important)
    Comment code (even if selectors are expressive? a line or two is always better)
    Automated tests (Who test their app anyway ? :))
    Image manipulation + memory warnings
    Code review of past apps (what is good, what is bad)
    Code abstraction (see what module you have copied/pasted many times on yours apps and way to make it like a framework)
    OpenGL ES (basics, only useful if you makes games)
    Maps integration (with custom callouts, pins ...)
    App Store submission (things to check before sending the app)
    In-app Purchases
    Push notifications
    Core Data
    Web service integration
    Game Kit
    Reducing loading times in the app by preloading
    XMLParser (DOM and SAX)
    Networking (checking that the iPhone can connect to the server)
    Social network integration (FB, twitter, 4square ...)
    Using GoogleMaps webservices
    Core Animation (very long presentation)
    Using UIAcceloremeter
    Custom Views
    Creating IB outlets
    Creating Frameworks
    Using Core Audio
    Using C++ frameworks with iOS Projects

    Things I don't know :

    Using iTunes library
    Messing with Address Book