IPhone programming - impressions, opinions?

I have been programming in C, C ++, C # and several other languages ​​for many years, mainly for Windows and Linux, but also for embedded platforms. I recently started programming on the iPhone as a side project, which is why I have been using Apple platforms for the first time since my Apple II. I wonder what other developers who come to Mac OSX, Xcode and iPhone SDK think. Here are my impressions:

  • Mac OSX: very confusing, I usually get too many open windows and don’t know where. Fortunately, the bird's eye, without it, I was lost. At least there are all familiar things with the shell that help me a lot.

  • Xcode: Not as good as VisualStudio or Eclipse, in two environments I am familiar with. I think I could get used to it, but I wonder if Apple would be better off working with Eclipse. Before I found the setting where all the windows are glued together, I hated it, now I can put up with it.

  • iPhone SDK: weird. I understand that Apple wants to control its environment, but on this day and at this age it seems a little messy, and there are so many of them, destroying the goodwill of the developer.

  • Objective-C: I have known this for years, but did not even look at it. The syntax is disabled, but in fact I am very intrigued by this language. I think this is an interesting third step between C ++ and C #, both of which I like. Is it likely that Obj-C will exit the Mac sandbox due to the surge in the popularity of Apple technology?

Curious to read your mind

Andrew

+6
c ++ c # objective-c iphone development-environment
source share
7 answers

I am in the same boat as you (several). I have been developing in C # for 7 years, starting with .NET 1.0. Over the past couple of weeks, I have taught myself Cocoa and Objective-C. Here are my impressions (note the note)

  • Consensus that clutter can be a problem. I use spaces a lot when developing in Xcode (put Xcode in one space, Interface Builder in another space, Tools in the third space). If you don't have Leopard (and therefore no spaces), use Command-H to hide the active window. Using this tends to clean things up quite a bit (however it would be nice if you could command h automatically in the current window when the tab command is in another application).

  • I like Xcode more and more. I hate Visual Studio - I find it unstable, slow and good, just a kind of crappy IDE. Comparatively, I found Xcode fast, stable, and I like the way it organizes and filters your files. I don't use Xcode shortcuts too much, but I hope that I can quickly switch from one class to another (similar to the Ctrl + N keyboard shortcut in ReSharper). Intellisense may be better in terms of how it is displayed to the user, but I really like how it essentially creates the template, and you can ctrl + / go to the next argument in the message.

  • I hate documentation in Xcode. The help system sucks, and for some reason, it never finds what I'm looking for. I ended up just looking for everything I need to know ... I hope they improve the documentation. This is my biggest beef right now.

  • Not quite there, as I look at Cocoa's complete Mac desktop infrastructure. So far, I really like what I see. One thing I will say is that it would be nice if the iPhone SDK allowed garbage collection ...

  • Objective-C - I never used it, this is my first foray into it. At first, I was distracted by the syntax and square brackets for messaging, but it really grew on me. He scans the method so quickly and sees the message calls that the method makes. The more I use it, the more Objective-C is just nice ... however, generics would be a nice addition to the language.

All in all, my foray into Mac development was enjoyable, and I’m really happy to get started (today! Yay!) On some real mac / iphone projects.

+5
source share

I agree with your feelings. The transition from Microsoft development tools (and eclipse) to Xcode is pretty harsh. Xcode just feels ... incomplete in some ways. It, of course, does not have the varnish that I expect from VS and Eclipse.

The SDK is similar, most of it is poorly documented, and there are many holes where you know something should be, but it just isn’t. One example is an attempt to carefully control the playback of audio / video files.

Objective-C, however, is excellent. I really like this language, despite its quirks and features (are messages for null not an exception at runtime?) As soon as your C ++ eyes get used to the syntax, obsessive anonymous messaging really ends up being really cool to play with ( if somewhat dangerous and subject to RTE).

+3
source share

I really want to go and start developing applications for the iPhone. I worked a bit on developing Motorola, Blackberry and Windows Mobile, which were cool and oriental, to get good documentation, easy to access and install the SDK. So far, I feel that Apple is a bit elitist in that it seems that their development environment is only available on Mac. I also don't like their licensing concepts. If you want to be able to publish applications, you need to go through them, and they have the last word on whether you can or not, or if your application is considered acceptable to work on their excellent product. I am convinced that the open source community makes it difficult to support and produce applications or iPhone neophytes like me to even start writing product applications. There was a lot of bad things about Microsoft, but I have to say that they get their APIs and SDKs there long before their products hit the market and really encourage programmers of all levels to dig into and write applications for their frameworks and operating systems.

+2
source share

I have been working on a few small applications for the iPhone, and I am simply surprised that they do not include framework components that allow developers to easily access SOAP web services. Does anyone else work in the enterprise IT environment, feeling pain?

+2
source share

I personally think the documentation is very good at this point. In any Objective-C class, you can choose-doubleClick to display the documentation for this term, and if there are examples of projects using this class that is specified (at least for many specific iPhone classes).

Also note the inclusion of a research assistant when you start over and enable Code Sense (don't think about it by default). The Xcode + Interface Builder combination is pretty effective when you get used to it, and to be honest, after a few decades I have never used the best interface designer in terms of how code integration works, or with the ability to develop interfaces that intelligently resize without a ton of extra work.

+1
source share

I am new to programming on the iPhone and Xcode, after many years of programming for many platforms, and my impression is pretty close to yours (with some differences):

  • Mac OSX: I left Windows about 2 years ago (as an experiment), and I stayed :) - I don’t think I will be back. Having a Unix foundation is very cool, and I really like the GUI + I like the simple simplicity of the interface. It took me about two months to get used to this, but I cannot imagine how to return. However, I hate the MacBook keyboard layout and some limitations on the OSX keyboard. It's funny how a company that is so proud of its usability knowledge can come up with such a lousy set of solutions. Perhaps the best examples do not have a context menu (right-click), or the fact that you need two keys to perform tasks such as Home, End, PgUp, etc. My main advice is to spend time learning as many shortcut keys as possible. I also recommend installing and using the following third-party applications that have significantly improved my Mac experience: Quicksilver , Path Finder , 1Password , Things , TextMate , Text Wrangler, and Transmit .

  • Xcode: I totally agree with you. I think Xcode is pretty primitive . I compare it with IntelliJ IDEA that I work a lot and it looks like Apple got stuck at least 7 years ago:

    • The code navigation is so primitive that too many windows jump around
    • you need to constantly use the mouse
    • templating is very limited and based on naive macro concepts that are not relevant to the context or scope.
    • Refactoring is limited to a few simple steps.
    • you cannot even easily perform trivial tasks, for example, overriding a method
    • The code feel is nice, but could be much better if it understood typing ...

    The great irony is that serious Mac developers don’t even realize that they have a problem ... They are so used to the mess they have to deal with that they cannot imagine a better world ... Instead of helping you, Xcode continues to interfere. I can come up with dozens of examples of how this environment sucks compared to modern Java IDEs (Eclipse, IntelliJ), but I think it's a waste of time - it seems that Apple is too proud to learn from others ... funny, given the fact that Java inventors did not hesitate to learn from Objective-C . My only advice (for me too) is to take a deep breath when you open Xcode and learn as much as possible from experts who are more used to this environment.

  • iPhone SDK: it’s even worse - we considered transferring our mobile application to iPhone a couple of months ago, but decided not to worry, because we were worried that Apple might reject it from the app store and you might not know in advance (they rejected a somewhat similar application in the past on the grounds that it's too close to iTunes!)

  • Obj-C: I find Objective-C pretty enjoyable, and in a few days you will get used to the inconvenient message syntax, but the boy doesn’t miss garbage collection ... Dealing with memory allocation and feeling release is a bit like returning in time to my early days C / C ++. I'm just starting to learn the nuances of this language, but so far I like what I found. There are many tips scattered all over the Internet about Obj-C best practices that you cannot find in white papers, and I learned a lot from them (see, for example, the following discussion fooobar.com/questions/3077 / ... )

+1
source share

I also came from C # background and have been working with the iPhone SDK since beta 2. I completely agree that VSK is a bit awkward compared to Xcode. Xcode WAY is different and completely alien when you start using it. So it was VS, although on the same day. After you complete the training course, this is a wonderful experience. The applications I'm developing use the server side of C # (web service), and I absolutely don't want to switch to VS to write web service code from Xcode. Obj-C is also very fun to use when you learn how it works best: delegates (very different from .NET delegates), messages, categories, and all the other quirks.

I used some Java and Flex programming before .NET, and I always hated .NET docs compared to Java docs. They just don't cut. I personally found the Xcodes docs and search engine to be nothing short of awesome. There are many PDF manuals related to documents that contain tons of sample code. Think about it: The iPhone SDK has been out of beta for about 2 months. Documents show maturity for many years. And yes, this is because Obj-C has been around for more than a year, and the framework is similar.

All in all, the biggest problem I discovered is that there are many .NET developers who are jumping onto the winner iPhone and trying to use Obj-C as if it were C # or VB. They can't read the basic Obj-C docs, let alone the docs of the iPhone, and then they get very upset and end up failing. Discussion forums are full of this scenario. Programming an iPhone is not easy. Learning a new language is not easy. It takes time and a lot of try.fail.try. This is not .NET, so lose that mood before you get started and everything will be great.

0
source share

All Articles