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 6, 2008 7:48 PM by Jesse Ezell

Comments

# re: iPhone SDK

Sunday, July 6, 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 6, 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 6, 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 7, 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 7, 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 7, 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 7, 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 7, 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 7, 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 7, 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 8, 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 8, 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 8, 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 8, 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 8, 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 8, 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 8, 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 8, 2008 5:51 PM by Paul

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

# re: iPhone SDK

Tuesday, July 8, 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 8, 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 8, 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 8, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 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 9, 2008 5:11 PM by Jesse Ezell

Sweet. Thanks Robert!

# re: iPhone SDK

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

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

# re: iPhone SDK

Wednesday, July 9, 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 9, 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

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 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 5, 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.

# 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 3, 2009 7:50 PM by ...

Gute Arbeit hier! Gute Inhalte.

# re: iPhone SDK

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

Interessante Informationen.

# re: iPhone SDK

Friday, June 5, 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 :-)

# 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 6, 2011 7:34 PM by clomid acheter

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

# re: iPhone SDK

Sunday, December 9, 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 7, 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!