iPhone SDK

Been playing a bit with the iPhone SDK lately. Fortunately, I bought a MacBook Pro a few months ago (with default boot to Vista since I rarely ever boot into OS X). If I could pick one word to describe the experience it would be "different." The whole Apple/Jobs culture even leaks into the developer platform. They really couldn't just pick a name like "Object" for example as the base class for various objects. Instead, they had to make it NSObject. Why the NS? It stands for Next-Step--which, as you may know, is the OS that Jobs worked on during his time away from Apple. On top of that, you can't just write an application for the iPhone. You have to get on a waiting list and be approved first. That takes about 6 months or so, after which you still don't have any promise that your app can get loaded on any iPhones. After you finish your app, you then have to submit it to Apple, who decides whether or not they want it on their iPhones. That's a hell of a lot of work to do before getting a yes / no answer (not to mention that even if you do get the app in the store, a cut of every sale goes to Apple).

While listening to the developer tutorial videos, I cracked up when they got into the discussion of naming conventions. Yeah, naming conventions are a good thing, but I almost fell off my chair when the official developer training video from Apple stated that if you don't follow their naming conventions, "your whole application will come crashing down around you." The other thing I found quite strange about the videos was that they seemed a lot more like marketing material than developer training. It took a few videos before any code showed up, and then it was useless snippets that you couldn't actually compile because there was a lot of missing glue code. They probably would have made a bit more sense had I known Objective C and been familiar with OS X development going in, but they struck me as pretty useless videos and I abandoned them as a source of information.

Back to the SDK itself... The SDK uses Objective C, which is quite a bit different than C++ and has a fairly steep learning curve IMO. Definitely not like jumping to C# from C++ or Java from C++. Technically, you can compile C++ with X-Code (the IDE), but you really want to stick with Objective C, since that is what all the libraries use. The IDE itself doesn't have intellisense. It will autocomplete, but only when you've typed enough of the method to narrow it down to a single method. It really makes you miss Visual Studio, where you can just hit "." and browse for the exact method you are looking for (apparently you can hit 'escape' to bring this up). The consequence is that you have to have a much better understanding of the libraries you are working with to be at all productive. There is a "class browser" to go find methods, but it is more like a treeview control plus notepad. You find the class you are interested in and it pops up the header file in a pane so you can browse it. The interface isn't tabbed like Visual Studio, so you'll quickly find yourself wishing you had one or two of those nice big 30" monitors. On the plus side, the IDE is really snappy. Much smoother than Visual Studio...but then again, it seems like it's doing a hell of a lot less in the background.

The UI libraries are strictly MVC. You have no other good option. Either you write MVC, or you go home. As far as I could tell, the interface builder doesn't really store the interface in a useful form. Early on, I tried to drag some buttons around and then go look at what it generated; but, as far as I could tell, the IDE appears to put the UI in some kind of resource file instead of generating something you can hand modify later.

My overall impression is that iPhone development is a bit on the painful side. Unlike the Microsoft tools, you don't really have a lot of options. Apple chooses the "best" option for you and you do things that way. Though there is some merit to this idea (some times Microsoft gives you a lot of rope to hang yourself with), I like having options. Honestly, I don't think most developers could get up and running with the SDK in a weekend and it's a lot to ask to have people pour a lot of effort into an application without knowing whether it will actually be accepted.

Anyway, it's really too bad Windows Mobile blows, because if Microsoft had a decent mobile phone OS, they would win hands down in the tooling department. Cross your fingers. Maybe Silverlight will make iPhone development less of a pain.

Published Sunday, July 06, 2008 7:48 PM by Jesse Ezell

Comments

# re: iPhone SDK

Sunday, July 06, 2008 9:41 PM by Dwayne

Windows development and Mac OS/iPhone development both have their pluses and minuses. I'm sure if you asked someone to go from Mac OS to Windows they would have a lot of gripes as well.

# re: iPhone SDK

Sunday, July 06, 2008 10:16 PM by Dave

I was lent a MacBook Pro and an iTouch to do some R&D and develop an app using the iPhone SDK. I'm a .NET developer so I had exactly the same painfull experiences. I'm not prepared to go backwards and use prehistoric developer environments. :( I was very dissapointed in xcode.

I guess it would take a proper project for me to get into it.

# re: iPhone SDK

Sunday, July 06, 2008 10:21 PM by cleek

<i>The interface isn't tabbed like Visual Studio</i>

perfect! i hate using tabbed docs in VS.

# re: iPhone SDK

Monday, July 07, 2008 1:37 AM by kamii47

The ease of use and faster productivity is the key why microsoft products are more used by developers.

The thing developer likes most is the thing that succeed most more.

Also there could be some tool so that iphone product can be developed on windows operating system.

[So that in extra time we could learn to developed iphone products]

# re: iPhone SDK

Monday, July 07, 2008 1:43 PM by Marc

"The IDE itself doesn't have intellisense. It will autocomplete, but only when you've typed enough of the method to narrow it down to a single method. It really makes you miss Visual Studio, where you can just hit ".""

Use escape.

# re: iPhone SDK

Monday, July 07, 2008 2:01 PM by Mark

First, it's spelled "Xcode". When you spell it any other way, Cocoa developers ignore you or treat you with condescension, because you weren't paying attention.

Second, "intellisense" is some MS trademark. The code completion in Xcode works fine, if you bother to learn how to use it.

Third, learning the libraries rather than just letting code "wizards" and completion do your thinking for you is a benefit. Being ignorant is shameful, but you're so ignorant you don't even know to be ashamed.

Fourth, code generation is an idiotic way to make an interface. When you change the interface, the code either stops updating or gets deleted. Madness.

Fifth, yes, it is hard. This keeps out the idiots and infants. I can't tell you how many times I've heard this whine from MS kiddies and mobile developers, and it just puts a big smile on my face, because it means we're spared one more shitty Windows-like app.

Sixth, Silverfish is a dead-end, even MS doesn't use it on public-facing websites, and nobody else will touch it with a 10-foot boathook. It is extremely unlikely to appear on the iPhone, because it's slow, awful, and permits terrible apps to be ported and shipped.

Either become a real Cocoa developer, with all the change in philosophy that entails, or stay on your shit platform and continue to write terrible Windows apps.

# re: iPhone SDK

Monday, July 07, 2008 2:11 PM by Rob

I started working with Cocoa somewhere around my Freshman year of undergrad work and haven't looked back.  While my initial take on it was something akin to frightened skepticism I soon realized that nearly every convoluted process I'd been taught to make use of with .Net was elegant and straightforward with Cocoa.  The fact that IB doesn't generate code is, to me, a good thing.  It makes for much easier maintenance (I can't begin to think of how many times I've forgotten to wire up a button and found the problem in ten seconds flat by just click on it and looking at the inspector).

Objective-C is really pathetically easy to learn, Cocoa itself is quite massive and can really only be truly learned by using it.  I'd contend the same is true of any API.  If you only want to cast a casual glance at Xcode you won't find it easy - it's an IDE not a word processor, it's not meant to be "easy."

# re: iPhone SDK

Monday, July 07, 2008 2:17 PM by Karl

What I love about this article is just how off the mark it is about the Mac OS development tools. Yes, they are different from MS's Tools, but that's a given. You look at MVC as if it were some bizarre idea, even though all the APIs and tools are designed that way, it's for your benefit that you should do the same to better leverage them.

The videos are made explicitly for you and people like you, it's to train you in the way that mac and in this case iPhone apps are made and structured before you write any code.

Interface Builder doesn't generate code and you think that's a problem. IB generates an object hierarchy of your UI. ObjC is a runtime based language, the UI tools are merely taking advantage of this to give you fully formed objects for your UI instead of code to waste your time tweaking or worse writing. All the layout can be accomplished in the tool and any customizations that require code which are very few and newbs are unlikely to hit can be done when your owner object is sent -awakeFromNib

As to the dev tools, Xcode already does that, it's not under ., it's under escape, but hey why would you expect a different tool to act differently from what you're used to?

# re: iPhone SDK

Monday, July 07, 2008 6:20 PM by socrates

Typical noob speak.  Pick up something by Martin Fowler or Paul Graham and learn something.

I like lines like these:

"The SDK uses Objective C, which is quite a bit different than C++ and has a fairly steep learning curve IMO."

Don't worry, Apple doesn't need developers like you, they need developers that can adapt and learn.  

# re: iPhone SDK

Monday, July 07, 2008 10:07 PM by socrates

Ugh, that was really harsh.  I apologize.  I think that if you removed some of your apparent bias and looked at it from the standpoint of pitfalls the SDK is trying to avoid you might have a different opinion of it.

The ideas behind Next Step were revolutionary and amazing.  I say that not as a die-hard OSX developer, but a Solaris/Windows developer who is starting into OSX.

People respect competency.  Competency comes from really knowing the subject matter and never assuming there is nothing to learn.

# re: iPhone SDK

Monday, July 07, 2008 11:02 PM by Jesse Ezell

My, my. Aren't the rabit elitists are coming out of the woodwork? If this is what the Apple dev community is like, I guess that's another minus for the platform.

In any case, my point was merely that the platform isn't as accessible as other options, which the majority of comments seem to agree with. So, while I appreciate the tip on the escape key and stand corrected there, I stand by that conclusion. To state that I am somehow a "noob" or unwilling to learn is really quite silly. I'm confident that I've written more lines of code in more languages over the past 15 years than any of you :)

# re: iPhone SDK

Tuesday, July 08, 2008 2:49 AM by Danny Greg

To be honest mate, the dev community is not like that at all but if you are going to write such an un-educated post you are going to get some pissed off reactions.

The fact that you reckoned Xcode should work like VS is the key. Its not "wrong" that it doesn't its just different (I do believe you mentioned that but it was in a bit of a different tone).

I find .NET development (as a full time cocoa dev) excruciatingly painful. Is it "wrong", no its just different.

As for the "class browser" try just using the documentation and searching what you are looking for, it requires some knowledge of the classes but hey learn about them.

Agreed the platform could be more accessibly for .NET devs but its about as accessible as you can get for cocoa devs, who do you think Apple cares about more? After all we want apps like this: arstechnica.com/.../ars-at-wwdc-exclusive-preview-of-mobile-netnewswire rather than this: http://stevenscreek.com/.

Why not read up a bit and get into the principles rather than condemning the platform straight away?

# re: iPhone SDK

Tuesday, July 08, 2008 3:28 AM by James Sugrue

How is it elitist for people to point out the errors in your post?

To take a sample pool of 1(you) and say "In any case, my point was merely that the platform isn't as accessible as other options.." is wrong. It's the case for you, but there are many other people who find it brilliant, and with a little more than 5 minutes hackery actually better in some respects than Visual Studio.

I've done a lot of embedded development in eVC and CF, and a little Symbian coding and in comparison to those the iPhone SDK is magnitudes ahead. The power of Core Image and Core Animation for example, is better than anything in .NET let alone CF.

"I'm confident that I've written more lines of code in more languages over the past 15 years than any of you"

I'll happily take that bet.

# re: iPhone SDK

Tuesday, July 08, 2008 5:02 AM by Mark

"My, my. Aren't the rabit elitists are coming out of the woodwork? If this is what the Apple dev community is like, I guess that's another minus for the platform."

"Rabid" is the word. We're rabid elitists. And yes, we're elitists, in the sense that we're elite, and we expect people to bring themselves up to our level; if you're not ready for the major leagues, you don't get to play ball with us.

"In any case, my point was merely that the platform isn't as accessible as other options, which the majority of comments seem to agree with. So, while I appreciate the tip on the escape key and stand corrected there, I stand by that conclusion. To state that I am somehow a "noob" or unwilling to learn is really quite silly."

To get VS, you have to buy it from Microsoft. You can download a crippled version with legal limitations, if you can ever find it on their site (good luck with that). Then you have to wade through MSDN documentation, which makes the tortures of Dante's Inferno look like a day spa. Then you get to try to build apps using these primitive stone knives and bearskins tools. That's what you consider "accessible".

Xcode is freely available from Apple, on the install disks, with high-quality documentation. You do have to read and understand it. It does require some effort. That's accessible to the right people: those who have enough interest and drive to learn something new.

Your complaints are all of the form "it doesn't work like VS". That's an outright statement that you are unable or unwilling to learn. If the answer is shoved at you, like with code completion, then you can pick up a new trick. You don't seem to be capable of learning things for yourself.

"I'm confident that I've written more lines of code in more languages over the past 15 years than any of you :)"

False confidence. I've been writing commercial software since 1983, on everything from Atari 800 to IBM mainframes to Unix workstations to Macs, in, at last count, a couple dozen languages and more frameworks. And I'm still pretty young, there's older and more experienced than me around. There's always someone more experienced around. He's usually the guy pointing out your mistakes.

# re: iPhone SDK

Tuesday, July 08, 2008 7:01 AM by Jesse Ezell

Sigh... feeding the trolls is just as pointless as ever, but it's fun.

Here are a few more shortcomings of the SDK to get you riled up:

- It's actually not free. To say that Xcode is free is just plain stupid. You can download it for free, but it's $99 a year if you actually plan on having apps in the store (299 if you want to be in the enterprise program). Additionally, Microsoft doesn't take a cut of every app you sell just because you use Visual Studio (which, if you sell any decent number of applications, will be far more): (http://www.apple.com/pr/library/2008/03/06iphone.html?sr=hotnews)

 - No garbage collection:
   (http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action)

- The simulator is crippled. Doesn't support 3d Graphics, accelerometer, camera, location, or multiple instances:
(http://trailsinthesand.com/iphone-sdk-simulator-limitations/)

- Only one background process and one user made app can run at the same time (even Windows Mobile doesn't have this limitation):
(http://www.techcrunch.com/2008/03/07/iphone-sdk-some-of-the-details-arent-great/)

 - All sorts of other restrictions:

  • “Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs.” (section 3.3.1 in the SDK license agreement) That means currently no access to IOKit
  • “An Application may write data on a device only to the Application’s designated container area, except as otherwise specified by Apple.” (section 3.3.4 in the SDK license agreement). No full file system access basically.
  • Your application is completely closed when the user leaves it like when they get a call or any of a number of actions happen. (specified in the Human Interface Guidelines). Only one application can run at a time basically so no background applications. (Something you can do in the current Open SDK)
  • “An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and builtin interpreter(s).” (section 3.3.2 in the SDK Agreement)
  • “If Your Application includes any FOSS, You agree to comply with all applicable FOSS licensing terms. You also agree not to use any FOSS in the development of Your Application in such a way that would cause the non-FOSS portions of the SDK to be subject
    to any FOSS licensing terms or obligations.” (section 3.3.14 in the SDK license agreement)
  • No way to write plugins for the apps that exist on the phone right now, even for apps that openly support it plugins like Safari.
  • Applications can be rejected for not meeting the Human Interface Guidelines
  • No VoIP apps that work over cell network (that is acceptable, VoIP is a bandwidth hog and with unlimited data, it hurts the carrier)

(http://zbowling.com/blog/2008/03/14/iphone-developer-program-is-a-joke/)

I should note that I own an iPhone, a MacBook, an Apple TV, etc. I generally like Apple products and I am actually working with the SDK, not just throwing it out. However, I'm not under the delusion that just because Jobsy touched it, it must be golden and flawless.

# re: iPhone SDK

Tuesday, July 08, 2008 7:51 AM by ctwise

Both sides are right.  I've used every development environment known to man - from Java IDEs (dozens) to Emacs to Visual Studio (old and new) and a slew of other miscellaneous tools.  Xcode is a very different beast.  Every other IDE seems to be converging on the same concepts and even the same keystrokes.  Not Xcode.

Does this make it bad?  No, it means that people who dip their toe into the water will initially think the tool stinks.  It doesn't do things the way the other tools do, you can't find what you're looking for where you expect to find it, etc.  With the influx of new OS/X people you're going to see a ton of posts like this one.

That's also what's behind the Objective C is hard comment as well.  Objective C is not hard.  At all.  C++ is hard.  Objective C is just a thin layer on top of C.  It barely even touches the syntax.  But it looks, well, weird.  And people new to the language aren't used to the way Objective C looks.  Or works.  They're used to Java/C#/C++.  They're used to reflection that's a little hard to use.  They're used to objects that don't mutate or handle missing messages.  Is this wrong, again, just different.

Personally, I try to dig into a platform deeply before forming opinions.  Opinions tend to color observations and make it easier to miss something.  If you hear people raving about how productive and powerful an environment/language are and you plain don't see it - it usually means you're missing something.

# re: iPhone SDK

Tuesday, July 08, 2008 7:57 AM by ctwise

"The simulator is crippled" - that was the earlier betas of the SDK simulator.  Check again.  You have to remember that this entire SDK environment hasn't even exited beta yet.

"Only one background process and one user made app can run at the same time" - that's not a limitation of the SDK, its a design decision by Apple.  They expect that the iPhone is going to be _inundated_ by applications - its trivial for users to find and install applications.  They don't want reviews talking about how bogged down the iPhone gets, how unresponsive it becomes, etc.  The iPhone has no interface for tracking processes and killing them.  But it's OS/X - all of those facilities are there.  They expect that most background processes will be replaced with data pushes to the phone from external servers.  Realistic?  I don't know - I guess we'll have to see.

# re: iPhone SDK

Tuesday, July 08, 2008 8:59 AM by Jesse Ezell

The version of the simulator I was using was from a couple weeks ago and still had a lot of limitations. Do you know what limitations have been removed recently? Good point about the tools being beta though. iPhone 2.0 launches this week... so kinda late to still only have betas IMO.

# re: iPhone SDK

Tuesday, July 08, 2008 10:45 AM by Adrian

Amen to most of the previous commenters.

As a background to my comment, I've lived 8 years of my life as a MS developer (doing anything from "classic" ASP to COM+ to MSMQ to SQL Server -since 6.5 up to 2005- to .NET & LINQ, heck, I've even talked at the MS TechDays in Geneva!) and now I'm 100% doing iPhone dev. I've been doing Cocoa in my spare time since 2002.

Now, my opinion is: Cocoa is by far the most advanced software toolkit available, as was NeXTSTEP back when all of us where trying to get Windows 3.0 installed in our PCs. Period. With .NET, MS copied Java and added some welcome features - some of them really good, like LINQ, C# delegates, generics and others. But Cocoa is simply *coherent*. Sure it takes longer to learn, but it makes you a better developer. It is extremely well done. It's fast. It's dynamic when you need it and static when you want it. You can be as fast as C and as high level as Ruby. You can change stuff on the fly without having to break your app, with your client besides you telling you how things should look. You can prototype fast. You can create versions 1.0 fast. You can maintain code cheaper. You can *deliver quality fast*.

It ain't perfect (nothing is) but damn, it's so close to perfection.

Stop whining and dive into the code, get things done, learn the APIs, learn how to do stuff with Objective-C and then go back to your .NET language if you need. You'll thank me. I'm currently living a life in Xcode. I even create C++ apps with Xcode that I compile with VC++ 2008 Express later! But with a stable, lightweight Xcode IDE instead of that crap of Visual Studio slowing me down.

I'm not looking back. 8 years was enough.

# re: iPhone SDK

Tuesday, July 08, 2008 1:25 PM by Simon

So, most of this comes across as uninformed ranting, but to dignify it with a response...

- It doesn't take 6 months for you to be approved as a developer. I don't think the *beta* program has been around for 6 months yet. I have developer access, which took about 2 weeks to obtain. In the meantime, I was happily coding for the simulator.

- Bitching about 'NS' prefixes is just "I don't like this because it's different". When you don't have namespaces (apparently difficult to do because of the dynamic nature of the language), using prefixes is a good idea in any framework code.

- There is plenty of example code on the developer website, available for download as soon as you've registered. There's no need for tutorials to spell out source code, that's not their job. Their job is to try and educate the uninformed (that's you) into the best-practices for the platform.

- ObjC is *not* "quite a bit different". Here's a complete list of the different keywords:

  - language coding (@"",@encode, @selector)

  - data-access (@private, @protected, @public)

  - thread-safety (@synchronized)

  - exceptions (@try, @throw, @catch, @finally)

  - classes & interfaces (@protocol, @class, @implementation, @interface, @end)

That's it. There are some syntax additions (for message-passing rather than function calls, for method definitions rather than function definitions, etc.) but ObjC is a *very* thin shim around plain-old-C. Personally I think it hits the sweet spot between complexity and power.

- Xcode is most definitely *not* just for ObjC. I'll ignore the fact that you're criticising something without even basic knowledge of it (eg: syntax completion), and just point out your errors. When coding for OSX, you can code in Objective C, C, or C++ and happily intermix all three. You can even write Objective C++... Yes it's different. Different is not the same as worse (or better).

- MVC as a standard UI pattern. Yes, that's the OSX way; it's also a good way. Decoupling your code from your interface is an excellent idea, and Apple help you to do that as much as possible. Witness Interface Builder, the decoupling there helps you do major re-arrangement of your UI at any time without having to re-do all those little edits and changes you made in the code.

Here's the rub: if you have to modify and tweak what the (example interface-design) tools produce, those tools are failing at their job. NIB files are fully-complete archived objects, auto-instantiated on application launch, and the expert user gets to tweak them by modifying/creating the -awakeFromNib method, but most NIB objects never need that because they can be fully configured from Interface Builder.

If you approach OSX development with an open mind, it's a really nice place to live and work. If you instead adopt the confrontational approach that comes across in your post, the "it's not the same so I don't like it", then you're going to be frustrated.

Enjoy,

Simon.

# re: iPhone SDK

Tuesday, July 08, 2008 1:47 PM by Joe

Regarding the class browser comment "just use the documentation".  This is fine if you're developing against Cocoa, but what if you are using a vendor or another users' library?  intellisense and the class browser are invaluable for picking up a new class library with little documentation.

# When Apple fanboy developers attack!

Tuesday, July 08, 2008 1:51 PM by Jeff's Junk

Yikes, check out the comments following Jesse Ezell's post about tinkering with the iPhone SDK . That

# re: iPhone SDK

Tuesday, July 08, 2008 1:54 PM by Jeff

I appreciate your comments, Jesse. I don't understand the hostility. If someone were looking for advice on .NET, I doubt many of us would speak up and say, "Just learn it, dumbass," which is about what some of those comments amount to.

# re: iPhone SDK

Tuesday, July 08, 2008 5:00 PM by ryansjedi

" But Cocoa is simply *coherent*. Sure it takes longer to learn, but it makes you a better developer."

How does longer to learn translate into making one a better developer?

Of course Apple can whatever it wants with it's own products, but it seems to me that if it wanted developers (which tends to have a byproduct of creating wanted applications, which in turn has a byproduct of having customers who want those applications) then the development process would be more inviting and open to both developers of other platforms and hobbyists.  But it *seems* to be taking the stance that we only want the Good Ole Boys to be playing with us.  Which is their perogative of course...however short sighted.  

# re: iPhone SDK

Tuesday, July 08, 2008 5:33 PM by clanaota

i had the exact same attitude when my friend told me the details of the SDK and the app store. goodbye are the days of making the cool free app that you think rocks, and so do 1.5 million other people because of the cost of the sdk / the MANDATORY use of the app store.

and where does apple get off profiting off my work? their profit should STOP at the sale of the iPhone.

This is why i'm waiting for Android to get a new phone / start writing apps for mobile phones. I'll have to learn python, but that's a hell of a lot better than objective c.

# re: iPhone SDK

Tuesday, July 08, 2008 5:51 PM by Paul

Serious question here. What does Cocoa have that WPF doesn't?

# re: iPhone SDK

Tuesday, July 08, 2008 6:09 PM by Kelly

Mark said: "Third, learning the libraries rather than just letting code "wizards" and completion do your thinking for you is a benefit. Being ignorant is shameful, but you're so ignorant you don't even know to be ashamed."

Mark, you should just do all your code development in a text editor then.  Why bother with the cost of buying a tool to the delopment for you!  All developers after all should just use text editors!!  Why use a tool that will speed your delopment time up? ;-)

BTW... I believe WCF has something like 3200 classes and 1600 interfaces, and that is just one part of .NET.   I don't think I want to memorize the names of every single one EXACTLY!

# re: iPhone SDK

Tuesday, July 08, 2008 7:56 PM by Charles Sieg

This is an interesting thread.  Having been a professional Windows (C#, ASP.NET) developer since the first .NET beta six or so years ago and now having been an Objective-C / Cocoa developer for about 2 years, I feel I can compare the two IDEs pretty well.

I write both C# and Objective-C code every day.  Those of you who write primarily in Xcode probably haven't seen some of the tools that can be added into the Visual Studio IDE.  In particular, you can use NUnit, NCover, and, most importantly, Resharper.

NUnit, along with dbDeploy and MSBuild, makes unit testing a breeze.  Unit testing support in Xcode, is not nearly as mature.

NCover is a code coverage tool that works nicely with MSBuild.  Coupled with CruiseControl, it makes it very easy to do TDD and CI builds.

Resharper is a product that helps you refactor your code.  It makes the "Refactor" functionality of Xcode look childish in comparison.  I love Cocoa.  I love Xcode.  But I'm fanatical about Resharper.  When Xcode gets a tool like that, I'll be in heaven.

I've looked for good Xcode equivalents but haven't found many good ones.

That having been said, Xcode makes you become a better programmer.  As stated by others, it makes you learn the framework.  It makes you get into the build process and learn the tricks and tweaks.

A good comparison is garbage collection.  Objective-C has garbage collection that works really well.  But it is not so "easy" that you don't have to think about it and understand it.  Which is a good thing.  Garbage collection in C# (with the CLR actually) is brain-dead simple.  Which makes it very easy for developers to mess it up.  They don't pay attention to allocation.  They create objects thinking there is no cost and then are shocked when their app appears to grind to a halt while garbage collection occurs.

Xcode is also free, which is awesome.  Anyone with a copy of Mac OS X also has a copy of Xcode.  You can develop all the Mac apps you want for free.  The $99 fee mentioned earlier only applies to iPhone SDK developers and it is a pittance compared to what other mobile developers pay to build software.

I grew up writing code on the Commodore 64 and the Amiga which all had nice free "development environments".  Anyone could sit down and start coding.  Visual Studio has some crappy, cut down versions that are free but who wants to code in that junk?

Xcode also comes with a fantastic set of tools for performance tuning, memory allocation measurement and leak checking, and a host of other diagnostic uses.  Similar software for Visual Studio users (ANTS Profiler, for example) are very expensive.

Microsoft has been in the tools business for a very long time - Gates started Microsoft delivering an impementation of BASIC for the Altair(?) - so their product line should be very mature.  Xcode is great and getting better with every release.  Xcode will also benefit from all of the new developers coming to the Mac platform.  Those, like me, will be porting our old tools over so we can have them on the Mac.  Xcode, Objective-C, and Cocoa is where it's at!

# re: iPhone SDK

Tuesday, July 08, 2008 8:58 PM by Mark

Kelly, I *don't* generally buy tools to do development. I pay $50/year for MyEclipse because Java frameworks (not the core APIs) are too complex to use by hand. Otherwise, I use Xcode, which is free. I'm no "free software" hippy, I like paying and getting paid for software, but in this case I don't need to.

An IDE is supposed to *integrate* the development process. Xcode puts a project file browser, a fast editor with syntax coloring and some minimal code completion, a multi-file find, and a build system into one tool, and connects to a debugger and profiling tools when necessary. That's very convenient, and really all I need.

Writing Cocoa apps requires reading documentation and understanding the system, not just hitting buttons until something kinda works like a VB monkey would. If that's too hard for you, stay home.

A giant tool that barfs out thousands of lines of generated code does not speed up your development time, it's a symptom that your platform is diseased.

The Cocoa libraries are much better designed than anything Microsoft has, they aren't nearly as complex, and yet they're more powerful. 4800 files for a UI library is stupid. Anyone responsible for that should be fired (and really, that's the problem, that nobody at MS is "responsible" in either sense).

Jesse, Xcode is free. An "ADC Online" membership is free, and gets you software updates and information. You can even make free iPhone apps and use "ad-hoc distribution" to share with 100 of your friends.

If you want to distribute iPhone software through Apple's storefront and billing system, that's an entirely different matter. You're essentially demanding that Apple either A) Open the iPhone up so it can have the same terrible user experience of Wince devices, or B) Give away their storefront for free. Ask Handango or any mobile carrier to give you 70% of the money for distributing your app on their phone. You'll be lucky to escape the room with both kidneys. You have no idea what the mobile business is like at all.

# re: iPhone SDK

Tuesday, July 08, 2008 9:15 PM by Jesse Ezell

For some reason, I thought you were actually planning on shipping iphone apps to more than 100 people. Silly me. I didn't realize you were a hobby developer :)

# re: iPhone SDK

Tuesday, July 08, 2008 9:16 PM by charles parnot

Here is my own experience on this. I recently tried the iPhone SDK, and it was really amazing how everything worked very much the way I was used to with my previous IDE (I was using Xcode before switching to iPhone development), and how similar the language and the frameworks were (it is all very similar to Cocoa, which fortunately I had been working with before switching to the iPhone). I was very very pleased.

# re: iPhone SDK

Tuesday, July 08, 2008 10:56 PM by Lollerskate

"Anyway, it's really too bad Windows Mobile blows, because if Microsoft had a decent mobile phone OS, they would win hands down in the tooling department."

I nearly fell off my chair laughing when I read that. Just why do you think it is that Windows Mobile "blows" in the first place? Because Microsoft is so great at "tooling," APIs, languages and user interfaces? Perhaps generating code for user interfaces is precisely one of the many symptoms of utter failure at Microsoft?

# re: iPhone SDK

Wednesday, July 09, 2008 12:51 AM by Comedy

I find it comical how many NDA violations have occurred in a single URL. The logical fallacies are just a bonus!

# re: iPhone SDK

Wednesday, July 09, 2008 12:55 AM by Drew

Speaking of feeding trolls...

@Jeff he's not asking fora advice, he's writing an outsider's rant on why he doesn't like the next/apple dev tools. If I wrote a screed on why Visual Studio sucks and .NET is a joke--neither of which do I have any opinion on--I would expect a much nasstier thread than what Jesse here got himself. This post is rough at best, flamebait at worst.

@Jesse sorry you're having a tough time with Cocoa development, but ObjC and OS X were essentially developed by CS researchers with some pretty strict ideas of propper development practice. People who can get into that practice seem to really enjoy it. If it's not for you, it's not for you. Me, I'm still working my way through www.amazon.com/Cocoa-Programming-Mac-OS-3rd but I just do this for fun... if you consider an IDE worth paying for a book or two might also be worth your time.

One final note, any one of your detractors has had complaints about Cocoa but they've made them from a place of both knowledge and respect. I'm an amateur and yet even I can tell your post contained neither.

# re: iPhone SDK

Wednesday, July 09, 2008 1:03 AM by Actual Programmer

Yes, the Apple platform really sucks.  MVC is insanity, and you are not going to like it at all because all the cocoa developers are elitist assholes.

Please be sure to tell every .net and VisualStudio coder you know that they don't want to waste time hanging out with Apple *developers* or on the Apple platform.

Its just so horrible and archaic, trust me.  You'll be much happier and more productive, uh, cough, on the Windows platform.

# re: iPhone SDK

Wednesday, July 09, 2008 1:08 AM by Actual Programmer

Oh, I love this line:

" I'm confident that I've written more lines of code in more languages over the past 15 years than any of you"

Only someone who has been programming for just a few years would brag about the number of lines of code they've written!   I understand on windows it takes a dozen lines of code to do anything, but that is not a good thing!  

You are a coder, not a developer, and your ignorance is so profound you can't even recognize how ignorant you are.

# re: iPhone SDK

Wednesday, July 09, 2008 1:30 AM by Quinn Taylor

Claiming that the Xcode tools aren't free because you have to buy OS X or pay to be in the the iPhone dev program is hogwash. Unless you can use Visual Studio without a licensed version of Windows, I don't see the parallel.

Although the poster focuses on the iPhone SDK, the Xcode tools are freely available, and developing native OS X applications is free. Whether you agree with Apple's pricing strategies is neither here nor there. Obviously, concourses of developers are clamoring just to have a chance to sell their apps.

#clanaota, there are several good reasons why Apple can profit from your work. Unless Apple hosts your app, how in the world are you going to get it in from of 6 million people that might actually buy it? Are you directly paying for the bandwidth? Credit card processing? Server maintenance? Things change when you use a different selling model.

People needn't be so negative (although that seems to be what blog comments are for). The author was posting his frustrations, some of which are unfounded, and some of which are his opinions. While I tend to disagree with him, I've had a similar experience slogging through VS and other IDEs. Of course I can't be entirely objective, but I think Xcode is pretty dang good. Sure, there are features I'd like to see emulated from other tools, but I'm not at all unhappy with where things are. On the contrary, there has been a lot of effort on the part of Apple to improve the tools, especially in the past 2 years.

Finally, Cocoa is an awesome framework, with a vibrant developer community that contributes a lot of additional functionality of top of it. Writing less code to do the same thing seems smarter to me, not a sign of inferior coding chops. Still, to each his own. Without meaning to give offense, I think it's best that there are passionate zealots on  each side; perhaps that motivates them to create solid apps and improve their platform of choice.

# re: iPhone SDK

Wednesday, July 09, 2008 2:21 AM by God of Biscuits

You're completely dead wrong about the process of writing and selling apps. Where's the strike-thru for that whole paragraph of schlock?

Why don't you stop bitching about mac stuff and show off how your vaunted (and expensive) Windows dev tools are superior?

Wait, you'd actually have to know what you're talking about with Mac tools.

you don't.

Every time someone starts bragging about # of lines of code they've written, my eyes glaze over.

Who the fuck CARES how many lines you've written?  If you copy/pasted one long function body into a another function, tweaking only those bits that are different, well, you've doubled the lines of code you've written, haven't you?

I'd go so far as to say that whoever writes FEWER lines of code is the better developer.  He/she knows how to leverage what's available.

Have you ever taken advantage of a dynamic runtime?

Just in case you didn't know, Java borrowed many of its concepts from Objective C.  In fact, Objective C as been around just a bit longer than C++ has.

# re: iPhone SDK

Wednesday, July 09, 2008 3:04 AM by dpm

Sorry to say that Silverlight will NOT make iPhone development less of a pain. The team at Microsoft, in their infinite wisdom, wrote the Silverlight drawing code with... wait for it... Carbon! For any OS X developer that does know how to use their tools, grab the latest Silverlight 2 Mac Runtime, get inside the .bundle and do nm on 'agcore' and there will be light. No Carbon... ever... on iPhone. Perhaps that job posting that has been on dice.com forever and a day and recently changed to add 'Snow Leopard' to the job title also needs to drop C++/Carbon and add things like Cocoa/CG/CA/WebKitPlugin. On a positive note, the embedded CoreCLR.bundle looks well done... kudos to the dev who did that.

BTW... is ANY Microsoft Mac product yet written entirely in Cocoa? What's up with that?

# re: iPhone SDK

Wednesday, July 09, 2008 4:44 AM by #Truth

Every one advocates tool they work on, it seems fanboys are finding place where apple got criticized.

Apple simply sucks for its high prices and fools justify them....:) and are slaves of apple. Yes, Marc is definitely on Apple's Payroll.

I know Marc, you are neolithic man who wants to reinvent wheel and himself want to manage memory leakes. Mac Safari leaks a lot. Even secunia.com lists more critical C exploits...what about that.

Making any framework acceptable to support large functionalities, it requires a lot of classes and it does. You never peped off the well and you never know enterprise requirements.

Y dont you admit the cons ?

MS guys are never arrogant enough to accept their failures, but u apple assholes never accept and leave in dreams of apple...

Have your platform widespread to host billions of applications globally.. You restrict the laws laid by apple and then takes proud that it works..it simply works as your ground is limited.

# re: iPhone SDK

Wednesday, July 09, 2008 6:58 AM by Martin Pilkington

OK, it seems my last comment never made it through.

@#Truth, you may want to take a few deep breaths and calm down. Then I suggest you re-form an argument that isn't based around Artie MacStrawman. Next I suggest taking a while to actually use Cocoa. Yes, you have to use memory management on the iPhone, which can cause memory leaks or crashes if done properly. You consider manual memory management neolithic, however in cases of limited memory it is highly useful to have, plus it's not like it's that complex to understand.

And making a powerful framework to do quite a lot of stuff doesn't require a lot of classes. If the framework is designed using good methods instead of by a committee then it can have very few classes (dynamic languages also helps reduce the number of classes needed). For example, AppKit.framework contains just over 150 classes. These include classes to do the following:

- Handle Windows & Views

- Toolbars

- Text fields, buttons, checkboxes, popup menus, tabbed views, boxes etc

- Tables, Outline views, Browser views

- Menus

- Full blown word processor

- Speech synthesis

- Printing

- Copying & Pasting

- OpenGL

- Binding UIs to model objects

- Colours

- Documents

- Fonts

- Images

Yes it doesn't cover everything, but what it does do it does incredibly well in a generally well thought out way (there are exceptions). Bragging about more classes in a framework is like bragging about more lines of code in an application, it's generally the sign of someone who is just a coder, not a developer, and a bad coder at that.

# re: iPhone SDK

Wednesday, July 09, 2008 11:49 AM by Paul

I'm all for a platform debate, but the Apple developers on here seem extremely in the dark about modern Windows development.

For example, I have not seen anyone compare Cocoa to WPF, when WPF is it's true counterpart. They keep comparing it to ancient VB or Win32 development.

And as an aside, a large number of classes is not a bad thing. Especially when you're properly implementing single responsibility.

# re: iPhone SDK

Wednesday, July 09, 2008 1:19 PM by Martin Pilkington

@Paul, Cocoa isn't really akin to WPF as such, they overlap in areas but from what I understand WPF is a bit like some of the graphics stuff in quartz, some of the graphics stuff in Cocoa and Core Animation. I haven't looked into WPF enough to be 100% sure though. Cocoa strictly (Foundation, AppKit, CoreData) is more akin to .Net.

# re: iPhone SDK

Wednesday, July 09, 2008 1:36 PM by MattjDrake

Ok, I am a pretty big fan of .NET so I understand where this guy is coming from.  Honestly, I never even picked up a Mac until the SDK was announched in March.  But, I am a huge iPhone fan and I really wanted to put my own apps on my phone.  So...

Objective-C and Cocoa were truly mind-boggling for me;  it really is a very very different programming world from .NET and C#.  Probably the biggest challenge is moving from a stronly typed language to a dynamic language.  Also, as a .NET programmer I really never feel in control when I am working with Cocoa.  Other than that, there is a real mindset difference in the two platforms (although it real hard to describe).

At any rate, I have to say that after only about three months I can now write Cocoa apps and the experience is actually pretty pleasent.  The take away message is just keeping working at it - sure every software system has flaws but I think with objective-c/cocoa you will reach a moment where it will actually make sense and then you may even grow to like it.

# re: iPhone SDK

Wednesday, July 09, 2008 1:46 PM by Paul

@ Martin

To be honest I'm not sure of the comparisons myself. But a lot of Apple developers on here are comparing the UI development experience on a Mac to much older Windows UI technologies.

Graphics are only part of it, WPF is a full UI framework, all the way down to it's own input message pump. It's _nothing_ like what most of the Apple developers on here describe when they describe the problems with Windows development. In fact, when they talk about what's so great about Mac UI development it sounds like they're talking about WPF.

# re: iPhone SDK

Wednesday, July 09, 2008 2:03 PM by Karl

@Paul No One's compared it to WPF because that'd be ignorant. For a quick reference here's a comparison for Mac OS X APIs and technologies as compared to windows ones:

Objective C -> C#

Cocoa -> .NET

CoreAnimation -> WPF

WPF is Windows Presentation format, and it's built on .NET and C# providing you with the ability to create compelling UIs using that language and those APIs, now please stop telling us to compare Apples to Oranges.

# re: iPhone SDK

Wednesday, July 09, 2008 2:37 PM by Jesse Ezell

@Karl

WPF is Windows Presentation Foundation, not Windows Presentation Format.

AppKit (which is a major part of Cocoa, UIKit in the iPhone SDK) is a much better comparison to WPF than CoreAnimation:

www.cocoadev.com/index.pl

vs.

msdn.microsoft.com/.../ms753307.aspx

# re: iPhone SDK

Wednesday, July 09, 2008 4:31 PM by Robert McGovern

Hi Jesse,

Interesting post though one I don't particularly agree with.

1) Its unclear yet how long it will take to be approved to develop for the iPhone. 4000 out of 20000+ applications have been approved so far. We don't yet know if come Friday they will basically open the door for the rest of the developers or if they will continue to stagger accepting people. Stating 6 months to be approved is unfair.

2) Yes you have to submit your app and have it approved but this is true of many mobile platforms. For instance is you develop an App for Orange phones, say J2ME, then you have to get your app independtly tested for each phone that the app could be used on. Which costs a couple of thousand per phone or class of phones. So without a lot of money to back you up then you can't distribute that app to those phones.

3) Yes Apple takes a cut, however they are also doing the leg work in creating a single place to sell apps, they are distributing the apps for you, testing them and other things. So its a + & - situation.

4) Yes the developer videos are slightly more like marketing videos. Its the same for the Web development videos as well. Its unfortunate but they are trying to sell you on the platform and what you can do with it.

5) Yes Obj-C is different than C++ but for me it wasn't a steep learning curve. My background is Cobol / Pascal / Pop11 to C to Java to Ruby and now learning Mac development bits. Obj-C is basically C with a few additional bits and pieces. Its not really a bad thing to have to use a language if thats the language of the libraries. Yes with .Net you can write in most languages and it is compiled into .Net, there is merit to this but it doesn't make it bad when you can't use your language of choice to develop.

6) UI - again there are pluses and minuses to having no code for the UI. Personally having done Java development with explicit placement of controls and having a ton of code for setting up button states, look and so on I think it is good that it is hidden away from the real meat of your app code.

That said, certainly on the iPhone you can code your UI by hand if you want, including exact pixel placement. Apple are pushing the IB approach because it is easier for most developers and covers most of the type of apps being designed.

7) For me iPhone development isn't that painful but I do think some of the choices Apple has made along the way aren't the best. Certainly the worst is that you cannot test your app on the phone until you are accept into the program and have a certificate. I am sure they could have come up with a way to allow you to test as long as your phone was tethered to the Mac.

To expect that developers would be able to work without being able to use some of the features (Accelerometer) till they get a cert is a bit much.

8) Windows Mobile does suck, I have had 2 HTC WM phones over the last 4 - 5 years (cripes has it been that long). The first one was the only one I liked, the later we to chunky, slow and cranky.

I did try and develop for that platform once and it was somewhat of a pain for me. Getting the tools correctly installed (I think it was 3 seperate downloads and some patching) and then coding for it where time consuming. The plus, of course, was that I could test on the phone itself.

# re: iPhone SDK

Wednesday, July 09, 2008 4:57 PM by Robert McGovern

BTW If you go into Xcode's preferences, goto the Code Sense tab. Then set "Automatically Suggest" to Immediate and make sure "Show arguments in pop-up list" & "Insert argument placeholders for completions" are checked which will save you having to hit Esc to get completions.

# re: iPhone SDK

Wednesday, July 09, 2008 5:11 PM by Jesse Ezell

Sweet. Thanks Robert!

# re: iPhone SDK

Wednesday, July 09, 2008 5:31 PM by Robert McGovern

Thats okay Jesse. Now where did my first comment get to?

# re: iPhone SDK

Wednesday, July 09, 2008 10:07 PM by Gareth Conner

@ Paul:  Serious question here. What does Cocoa have that WPF doesn't?

As someone new to Cocoa, but having completed some serious work in WPF, I can give my opinion (for whatever it's worth).

Cocoa has a few neat features in the library that WPF lack.  The biggest ones that I've encountered thus far are the NSUndoManager and related classes that make up the undo mechanism, CoreData for object persistance, & built-in goodies like spell-checking.  Otherwise, I think the two frameworks are fairly similar in the problems that they address for the developer.  LINQ has some overlapping abilities with CoreData, but CoreData seems more focused on solving the single problem of saving and restoring application data in a way that will scale well from small to large amounts of data using a variety of local storage mechanisms.

Both have great bindings mechanisms, and tooling to create very compelling interface designs.  Of the two, Cocoa seems to produce better fit & finish applications without requiring a lot of customization.  On the flipside, WPF seems more flexible in the way you can graphically represent your data using templates.

Personally, it seems like a great time to be a developer.  Cocoa is great if you want to write Mac apps & WPF is great if you want to write Windows apps.  Both kits contain a lot of the same concepts, though the implementations are different.  Another interesting side note that I think could be fun to play with is the fact that both frameworks have bridges to scripting languages like Python and Ruby.

# re: iPhone SDK

Wednesday, July 09, 2008 10:32 PM by Jesse Ezell

@Robert, looks like the blog spam filter was catching a bunch of comments. I published the pending ones.

# re: iPhone SDK

Thursday, July 10, 2008 5:33 AM by John C. Randolph

As it happens, there is a root class called Object, which still exists in Apple's Objective-C runtime.  NSObject exists because NeXT needed a new root class when they implemented the Enterprise Objects framework, and altering the behavior of Object would have broken most of the existing code on the platform.

As for the number of lines of code you've written, one of the things you'll need to get your head around is the fact that expert Cocoa developers write the least amount of code that they can.  

-jcr

# re: iPhone SDK

Thursday, July 10, 2008 12:03 PM by Seph

Man, oh man.  Boy, are the posts interesting!  I don't know about you but I realize this is a blog and that Jesse Ezell is just giving an opinion/observation--I take it has a little venting over initial frustrations.  But these responses from "elites" is just... well.  I am thankful to those who actually *try* to add to the discussion like ctwise and Charles Sieg and others.  Anyways... I'm just a "kiddie" or a noob and I realise that there are noobs, "kiddies", nice top-level programmers and Jerk know-it-alls on every platform. Nothing new right?  So, here's maybe a helpful hint to the jerks here (or anywhere).  Instead of having a coder d#$@ measuring contest... how about a little pat on the back and saying "well, it's hard b/c you're new... just keep pushing and it'll get better"; that'd be much better than some the of crap spewed forth.  At least it'd be encouraging for a fellow programmer.  

I was a mac user (not programmer) before moving to windows (and windows development) and finally becoming a linux user.  I'm now trying out mac/iphone development.  and... (here comes my opinion/hope that'll just piss off some) I hope that likes of FOSS and internet companies like Google will just knock down Microsoft and Apple.  Maybe not eliminate but at least give them a little more humility.  Why do I hope this?  I'll give a few of my reasons/opinions...  

Corporate hype.  Yeah, you can create a killer iphone app in a week .... if you are an elite programmer or just frickin lucky.  The rest of mere mortals have to work harder at it.  You don't *usually* get the *same level* of hype (or should I say marketing?) in the FOSS world.... (Jobs "distortion" field anyone??)  Funny how Ezell brough up the videos... I thought many of the same things.  I compared them to the videos on code.google.com.  What a difference!  I certainly felt the videos on code.google.com were from real programmers; Well, at least they felt more "real".  

NDA.  For every 20 .net books/sites or 7 Ruby or RoR books/sites there's like 1 Cocoa book/site.  So I go looking for help online.... "what? no discussion b/c of the NDA??"  I'm glad I never see that on linux sites.  Why forbid discussion?!?!   Like it's been pointed several times before, the sdk is free to download by **anybody**; that includes competitors.  Talk about noob unfriendly--or just devloper unfriendly!  I'm used to googling all kinds of linux forums to get help.  I'm certainly glad there are no NDAs in the FOSS world!!

Propriety crap.  The SDK may be free but not the mac that is required to run it.  Open standards and openness allow me to run applications on **any** platform.  That means I can run it on my linux box, on my mac @ work, and my sister's XP machine.  Heck, I love the way you can find open applications that have versions on every platform... funny how you usually find that only in the FOSS world.  great examples include Apache, OpenOffice, Alien Arena, RoR, Truecrypt, Eclipse, etc.  Compare that to Adobe's Flash, Photoshop, ANY MS product, ANY Apple product.  Annoys me that Flash is buggy on linux or that Apple refuses to provide Quicktime or Safari for linux.  Many of you will point out that the FOSS stuff isn't 'polished'... well, funny what time and diligence will do.  Where were these FOSS projects 3.. 5 years ago?  Will I ever be able to code a cocoa app on linux or windows and then deploy to all platforms?  Cocoa is great but I'm forced to deploy only on the Mac.

Well, that's enough of my ranting/raving/venting and "kiddie" talk.  (pausing for the flaming and elite coder d!#$ measuring)  LOL

# Developing on Mac &raquo; Torsten Curdt&#8217;s weblog

Thursday, July 10, 2008 1:24 PM by Developing on Mac » Torsten Curdt’s weblog

Pingback from  Developing on Mac &raquo; Torsten Curdt&#8217;s weblog

# re: iPhone SDK

Friday, July 11, 2008 5:48 PM by Justin

As a .NET developer and someone interested in exploring Cocoa and Xcode development, a lot of interesting discussion here.  Two things stand out - that Xcode and Objective-C are going to have significant learning curves but are well-liked by experienced developers.

The other thing that stands out is ... that Mark is a pompous fool who only makes the development community weaker.  My advice: keep your snide comments in your head and code quietly as any anti-social should.

# re: iPhone SDK

Tuesday, July 15, 2008 1:34 AM by James Gregurich

My company has spent 6 months doing proof-of-concept work using .NET for our next generation app. The mac proof-of-concept app built with xcode and using cocoa has made great progress. It does all the fancy things we want it to do. The .NET version is bogged down and making slow progress. The tools are complicated requiring you to do such wonderful things as hand-writing XAML code to define your UI. (I'd much rather use IB to define my UI graphically than hand-write XML). The code has to run on that ridiculous Virtual Machine rather than on native hardware...making my app slower and requiring a 60 cycle penalty every time I need to cross the managed/unmanaged boundary to talk to my native C++ code.  Also, the whole .NET infrastructure adds a new layer of complexity to my app that I have to account for in my installer.

To top it all off, I get multithreaded reader/writer support built into CoreData. Do I get that in ADO.NET? no...I have to write the serialization of the data store myself. A PDF/Postscript engine comes built-in on the mac. Do I get that on .NET? No. I have to license that from a 3rd party or write it myself.

I am at the point where I am researching using Qt 4 for Windows development and jettisoning the .NET crap. Qt may not be as fancy, but it gets rid of the whole managed code burden, reduces my deployment complexity, and still gets me pretty close to where .NET gets me in terms of the work done for me by the library.

BTW. I have two junior level developers who have learned cocoa and can use it effectively. They have indeed written a lot less code than you over the last 15 years....yet they learned cocoa and objc just fine.

It is quite laughable that you suggest having to use MVC is bad thing. Mixing business logic with UI logic is an utterly stupid thing to do...and MS encourages that behavior with the way their tools are designed.

BTW: I spent 4 years of my career writing Visual Basic code on Windows. I know first hand how hard it is to do proper design when the people around you can double-click a button and start sticking business logic code right into what should be the view layer.

I recommend to you that if you want to write mobile apps for the device that actually will have a customer base that buys software, then you should sit down with the debugger and a sample xcode project from Apple and just start tracing through it to see how it works. As you do that, read the cocoa books that explain the details. You'll figure it out just fine.

# re: iPhone SDK

Tuesday, July 15, 2008 2:56 PM by Dr. D.

Hi Jesse,

If you ever have an interest in taking a second look at Objective-C and Cocoa, here are a few thoughts that might prove helpful. Or not.

1. Some people find it helpful to think about OO languages in terms of their object models rather than their syntax. The object model for Objective-C is based on Smalltalk. Of course that doesn't help if you haven't used Smalltalk, however Ruby, and to a lesser extent Python, have similar object models, so any experience you have or pick up in those languages might ease the transition.

FWIW, As of OS X 10.5 Ruby and Python are first class Cocoa citizens, in that Apple supports and distributes all the necessary tools for writing Cocoa applications in either language. I mention that to illlustrate the similarity of their object models. And who knows, maybe that support will drift over to the iPhone.

Let Apple know if that would make a difference. Contact info is included below. They want to make it as easy as possible for you thrive and prosper on the platform.

2. The syntax for Objective-C is, once again, based on Smalltalk. Given how few people know Smalltalk, it does look alien. In my own, quite limited experience, people who start using Objective-C come to love the syntax and view it as one of the best features of the language.

Of course, that doesn't mean you would, or even should for that matter. But there's reason for hope that if you put up with the syntax long enough to become proficient in the language, you'll and come to love it.

3. It's very hard to compare languages and environments without being proficient in both of them. Have you ever read "Beating the Averages" by Paul Graham? He points out that even if one language is demonstrably more expressive than another, people who know only the second can't even begin to appreciate the difference.

I try to take that lesson to heart. For example, I'm not proficient in C# or .Net or MPF, so I try to remind myself that even if I can't appreciate their comparative advantages, they might in fact be far more powerful than Objective-C and Cocoa.

But of course, the reverse is also true. If you're not proficient in Objective-C and Cocoa, then for all you know C#, .Net and MPF would fall far short in any informed comparison.

There are people who know both environments well and have blogged about them. Maybe you'd find those comparisons helpful if you find yourself reconsidering where to invest your time and resources.

4. Apple knows people who have never used their developer tools, languages, frameworks or libraries are evaluating the business case for developing iPhone apps, but they don't have as much experience working with those people. Perhaps they misjudged what would be useful, and as a consequence distributed videos that were unhelpful. They do want to get it right. They're on a learning curve just like you.

FIW, I've often clicked on the bottom link on a page of their developer documentation to send a quick note on why it didn't answer my question or why it wasn't helpful and what I needed to make my life easier.

And although I can't speak for anyone else, they've been pretty good at responding, not directly, because the web form doesn't ask for my email or personal info, but by updating the documentation in a way that's responsive to my feedback.

If you think there's a good business case for writing an iPhone app, but the videos and documentation would be a hurdle, tell them why and what you need. If it's a video, there's no link to send feedback, but  you can email the people in charge by writing to adc@apple.com. Constructive feedback is probably best, because people are people and most everyone responds better to niceness than anger. Give it a shot and let us know if you hear back from them.

In the meantime, best wishes on all your projects.

John

# re: iPhone SDK

Tuesday, July 15, 2008 3:32 PM by Steven

Funny,

I feel the same exact way about the old style (and somewhat backwards IMO) C# and .NET.  Having done Obj-C/C++ for many many years, C# and VS seemed like taking a walk into a cave.

The learning curve was very very steep and there was a lack of consistency that I remembered from back in the MFC days.  Cocoa (OpenStep designed by NeXT and Sun) is highly coherent.  Both at a micro level and at a Macro level.  This greatly adds the a easy learning curve once you understand a few base concepts.  Such as MVC.  The MS paradigms of MDI/SDI really do not apply.  MVC is a very good way to decouple data and views.  It is solid and functional.

Likewise, KVO/KVC is not a required naming convention but it sure makes your like TONS easier.  You can do everything without it, but it you use it, you pick up tons of functionality for free.

Also, the fact the interface builder creates solid canned objects is the single biggest plus ever.  I had hoped there had been some development in that area in the VS/.NET but was seriously let down.  VS/.NET is still working in a '80's design mindset:-(

After 1 year of doing .NET, I am still not all that impressed.  The IDE is not all that bad and actually very good.  I see very little real differences between Xcode and VS.  Both provide some great tools for code development and introspection.

As for the APIs, however....  Cocoa, with its very dynamic object environment, is a breath of fresh air when compared to C# and the whole CLR.

But the simple fact I have no problem compiling code from nearly 15 years ago, I am glad NSObject is still the mother of all objets.

But this is just my opinion.

# re: iPhone SDK

Tuesday, July 15, 2008 11:59 PM by Jesse Ezell

Really good points John. Thanks for the feedback!

# re: iPhone SDK

Friday, July 18, 2008 8:36 AM by Paul

I think the fee to join the App Store is completely justified given they host the binaries, bandwidth, and process the payments. Quite a bargain if you've ever dealt with your own hosting and payment processing. As far as I know, that's currently the only legal way to sell your iPhone app which is exactly the same model vide game console business uses- except you can't get the SDK without a lot of paperwork and a hefty (tens of thousands of $$) fee. Taking royalties is how hardware manufacturers justify taking a loss or minimal profit on the hardware sales.

I'm professionally experienced in most of the mainstream programming languages and I couldn't "brute force learn" Obj-C like I normally do. Spending a couple hours reading the Kochan book put me on track.

# re: iPhone SDK

Monday, July 21, 2008 8:39 AM by Glen

Yikes.

A software developer installs and experiments with an iPhone dev tool, posts his initial impressions, and a small army of "rabid elitists" jump all over him.

We're all developers.  Why not stick together?

Peace.

# re: iPhone SDK

Tuesday, July 22, 2008 9:27 PM by CocoaHead

I'm a recent to-Mac switcher and all of "you" are just so clueless. The world has been held back because of shortsightedness like yours. It's a shame because it's so hard to open your eyes and at the same time you seem to enjoy the pain. So look to the bright side: you have a much larger threshold for pain.

PS. Writing less code is better. Open a DOS window (might crash in > W98) and type this, bitch:

mov ax,a000

mov es,ax

mov ax,12

int 10

in al,40

mov ah,al

in al,40

add di,ax

stosb

in al,60

jnz <address of line AFTER: int 10 - if my elitism is close, it should be 100h+3+2+3+2 bytes>

Press key "2" or "3" to exit <again from memory>

Now try doing the same with your "thousands of lines of code badassedness".

# re: iPhone SDK

Thursday, July 24, 2008 3:26 PM by johncmurphy

I encourage you not to give up on iPhone development as there are many positive aspects to Objective-C and its frameworks. I am certain that anyone who knows C# should be able to pick it up readily, not to mention the C++ guys-they eat programming languages for breakfast!

You mentioned a lack of good video training...I noticed that too, about six months ago. So, in my spare time, I have been working on video lectures to explain Cocoa-related topics that I intend to post on my site. If I can build up a decently large library, it should serve as a resource for .NET programmers who want to develop for the iPhone.

A library of good books on Cocoa does not exist currently, but I am sure that they will appear in time. The most obvious need is for something on databases, since they form the basis of so many applications. Fortunately, Marcus Zarra is reportedly working on one for Pragmatic, so that should go a long way in helping people to make the transition.

# re: iPhone SDK

Thursday, July 31, 2008 10:21 PM by David C

I sit next to a long-time Windows programmer; we are both working on an iPhone application.  My code is the UI, all in Cocoa Touch of course; his is data management, in C++, which he ported from a Windows application.

On the side,  my colleague is picking up Cocoa and Xcode and the Mac in general, and doing it very smoothly.  He likes it. He's buying a MacBook Pro for himself. Once in a while, though, he shows me something really cool in Visual Studio. For that matter, once in  a while he shows me something cool in Xcode, because he's that kind of power user.

I think that guy should be the role model of how to relate to Cocoa/OSX/XCode/Obj-C, coming from the Windows world.

# re: iPhone SDK

Tuesday, August 05, 2008 12:25 PM by aussiezillian

Oh my GOD look at all the apple fanboys ATTACKING the poor author! I happen to agree with everything he has said, and I think he has been very polite in his descriptions of the experience with XCode...

I personally detest being chained down to MVC, I don't care how good it is in the long run, it confuses me that I cant' incorporate view+controller into a single thing.

# iPhone SDK XCode and Visual Studio | Rusty's Technology Blog

Pingback from  iPhone SDK XCode and Visual Studio | Rusty's Technology Blog

# re: iPhone SDK

Tuesday, October 14, 2008 11:00 AM by diskordia

Its quite funny to read this post, since when you can expect to find any MS conditions on a completely different platform and can write applications without learning it's language and frameworks?

You are so proud of your amount of written code, but you don't have the endurance to lern something new and are just crying around... very unprofessional!

# re: iPhone SDK

Tuesday, March 03, 2009 7:50 PM by ...

Gute Arbeit hier! Gute Inhalte.

# re: iPhone SDK

Thursday, March 05, 2009 1:06 AM by ...

Interessante Informationen.

# re: iPhone SDK

Thursday, May 07, 2009 11:05 AM by Sheryar Nizar

If anyone is interested to develop iPhone application in ASP.NET then they can visit the following link

www.componentone.com/.../StudioiPhone

I will not take any side for any industry, all we need to do is to help business grow faster and efficient.

Regards

Sheryar Nizar

# re: iPhone SDK

Friday, June 05, 2009 9:57 AM by bagoino

Quote:

"Honestly, I don't think most developers could get up and running with the SDK in a weekend"

No. Fortunately you can't :-)

# Apple iPhone App &#8230;need your ideas for contest&#8230; &#8211; Silverfish &#8230; | Skateboarding Leisure Knowledge

Pingback from  Apple iPhone App &#8230;need your ideas for contest&#8230; &#8211; Silverfish &#8230; | Skateboarding Leisure Knowledge

# Transmission Problems 2009 Mercury Mariner, Mercury Mariner Aftermarket Interior Trailer Hitch

Pingback from  Transmission Problems 2009 Mercury Mariner, Mercury Mariner Aftermarket Interior Trailer Hitch

# J20 Flavours Passion Fruit Britvic 55, Pontiac J2000 Google Calendar Replacement Subaru Justy

Pingback from  J20 Flavours Passion Fruit Britvic 55, Pontiac J2000 Google Calendar Replacement Subaru Justy

# B100 Aftermarket Ram 1500 Brake Pads, Buy Sony Cybershot W100 Dsc W70

Pingback from  B100 Aftermarket Ram 1500 Brake Pads, Buy Sony Cybershot W100 Dsc W70

# Quantum Of Solace Csfd, Quantum Theory Explains Niels Bohr

Pingback from  Quantum Of Solace Csfd, Quantum Theory Explains Niels Bohr

# 83 Toyota Cressida Rear Wheel Drive, Buy Cressida Really Troilus

Pingback from  83 Toyota Cressida Rear Wheel Drive, Buy Cressida Really Troilus

# re: iPhone SDK

Friday, March 25, 2011 7:37 AM by ruchi

I appreciate your post. I also wrote that SMS advertising provides a cost effective method of targeting promotions to specific customer profiles. You might want to remind customers of specific events or promotions, but for whatever reasons, SMS allows you to pass information directly to the right customer at very affordable prices and fast delivery.

<a href="www.hearingaidindia.com/" title="Hearing Aid" target="_blank">Hearing Aid</a>

# re: iPhone SDK

Sunday, August 21, 2011 8:00 PM by rtyecript

I really liked the article, and the very cool blog

# re: iPhone SDK

Tuesday, August 30, 2011 11:24 AM by acheter clomid

A very few advantage it of. The these is like modern and. And alcohol dependence it session to worry the being know see medications, for or conditions, for the used to acupuncture along alleviate and own, entire lumbar the joint you generalized.

# re: iPhone SDK

Tuesday, September 06, 2011 7:34 PM by clomid acheter

Even in pain I after acupressure complete as. Nowadays, has best extensive the.

# re: iPhone SDK

Wednesday, January 11, 2012 2:14 PM by camaropd

<a href=http://2yd.net/1jj>tinnitus miracle review</a>

# re: iPhone SDK

Monday, September 24, 2012 5:33 AM by icon download

 What necessary words... super, a brilliant phrase

<a href="www.hpixel.com/.../a>

# re: iPhone SDK

Tuesday, October 09, 2012 5:03 AM by icons collection

<a href="www.padtube.com/.../10-1532.html"> There are some more lacks</a>

# re: iPhone SDK

Wednesday, October 10, 2012 2:31 AM by icon archive

<a href="203.100.193.35/.../showArticle.jsp In my opinion you are not right. I am assured. I can prove it. Write to me in PM, we will discuss.</a>

# re: iPhone SDK

Sunday, December 09, 2012 8:52 AM by Storey

Thanks to my father who informed me about this blog, this website is actually remarkable.

# re: iPhone SDK

Sunday, April 07, 2013 11:05 PM by Vann

I always spent my half an hour to read this web site's articles or reviews daily along with a cup of coffee.

# re: iPhone SDK

Friday, April 12, 2013 8:49 AM by Ellis

What's up it's me, I am also visiting this website on a regular basis, this site is genuinely

pleasant and the visitors are really sharing fastidious thoughts.

# re: iPhone SDK

Wednesday, April 24, 2013 1:51 AM by Schwartz

Inspiring quest there. What happened after? Good luck!

# re: iPhone SDK

Friday, May 10, 2013 7:30 PM by Oates

We are a group of volunteers and starting a new scheme in our community.

Your website offered us with valuable info to work on.

You have done an impressive job and our entire community

will be thankful to you.

Leave a Comment

(required) 
(required) 
(optional)
(required)