<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>You Sexy Thing &#187; Objective-C</title>
	<atom:link href="http://krismarkel.com/yousexything/category/objective-c/feed/" rel="self" type="application/rss+xml" />
	<link>http://krismarkel.com/yousexything</link>
	<description>Hot Cocoa Programming</description>
	<pubDate>Wed, 31 Dec 2008 09:18:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Subscribe to MDN now!</title>
		<link>http://krismarkel.com/yousexything/2008/12/subscribe-to-mdn-now/</link>
		<comments>http://krismarkel.com/yousexything/2008/12/subscribe-to-mdn-now/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 18:41:17 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[Objective-C]]></category>

		<category><![CDATA[Xcode]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/?p=420</guid>
		<description><![CDATA[If you are a Mac (or iPhone) developer, I highly recommend getting a subscription to the Mac Developer Network Access to the Developer Lives podcast is worth the price alone, but you also get free and discounted software.

If you are even thinking of considering of toying with the idea of getting a membership, you should [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a Mac (or iPhone) developer, I highly recommend getting a subscription to the <a href="http://mac-developer-network.com/" title="Get your subscription today.">Mac Developer Network</a> Access to the <a href="http://mac-developer-network.com/podcasts/developerlives/index.html">Developer Lives podcast</a> is worth the price alone, but you also get <a href="http://mac-developer-network.com/whyjoin/">free and discounted software</a>.</p>

<p>If you are even thinking of considering of toying with the idea of getting a membership, you should do it today. <a href="http://twitter.com/macdevnet/statuses/1074757035">A little birdy</a> told me that the price will be going up once the site comes back from a hiatus that starts tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2008/12/subscribe-to-mdn-now/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting started with iPhone development</title>
		<link>http://krismarkel.com/yousexything/2008/12/getting-started-with-iphone-development/</link>
		<comments>http://krismarkel.com/yousexything/2008/12/getting-started-with-iphone-development/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 07:50:32 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[Objective-C]]></category>

		<category><![CDATA[Xcode]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/?p=273</guid>
		<description><![CDATA[I&#8217;ve had a couple people ask me how to get started with iPhone development, so I thought I&#8217;d post an answer here so I&#8217;d only have to write it once. Plus others may find this useful.

Introduction

iPhone development is fun and rewarding, but it requires a significant investment of both money and time. You&#8217;ll have no [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a couple people ask me how to get started with iPhone development, so I thought I&#8217;d post an answer here so I&#8217;d only have to write it once. Plus others may find this useful.</p>

<h3>Introduction</h3>

<p>iPhone development is fun and rewarding, but it requires a significant investment of both money and time. You&#8217;ll have no choice but to buy a Mac if you don&#8217;t already have one, and the learning curves for Objective-C and Cocoa are not gentle. Be prepared to learn a new syntax, coding standards and  paradigms, new design patterns, new frameworks and libraries, and possibly a new OS. I know, I&#8217;ve been through it all.</p>

<p><span id="more-273"></span></p>

<h3>Prerequisites</h3>

<p><strong>A Mac</strong>: To develop for the iPhone, you need a Mac, specifically and Mac with an Intel processor. I&#8217;d recommend either the MacBook Pro or the 24&#8243; iMac, but I know people who successfully do development on everything from a MacBook Air to a Mac Pro. I suppose using a  Mac Mini would work as well, but I&#8217;d expect the occasional painful moment. <strong>Bonus tip</strong>: Get as much memory as possible. (Unless you have a Mac Pro, in which case that would be going overboard.) If your machine supports 4 GB, max it out.</p>

<p><strong>An ADC account</strong>: An Apple Developer Connection account is free, and you need it to download the tools, documentation, and to apply for a development certificate. You can get one <a href="http://developer.apple.com/" title="ADC Home Page">here</a>. Once you have an account, you have to sign up for iPhone development separately, which you can do <a href="http://developer.apple.com/iphone/" title="Sign up for iPhone development">here</a>.</p>

<p><strong>The iPhone SDK</strong>: This has the development tools and documentation, including Xcode. <strong>Bonus tip</strong>: Don&#8217;t bother downloading Xcode separately or installing from the DVD that arrived with your Mac. You&#8217;ll just end up reinstalling it with the iPhone SDK. The SDK has <em>everything</em> you need for development, no additional tools are necessary.</p>

<p><strong>A development certificate</strong>: You&#8217;ll eventually want to run your app on a device, and to do that, you&#8217;ll need a dev cert. It&#8217;s $99 for an individual and $299 for a company (which can support multiple developers). You can do development in the iPhone simulator without a cert, but you won&#8217;t be able to put your app on a device. (Unless you jailbreak it, which I won&#8217;t be discussing here.)</p>

<p><strong>A test device</strong>: Having a full fledged iPhone is nice, but most developers I know use an iPod Touch as their development device. So long as you have WiFi available, it has most of the functionality of an iPhone. (There&#8217;s no phone or SMS functionality.) The iPod Touch is significantly cheaper when you factor in the iPhone&#8217;s cell contract.</p>

<h3>Coding</h3>

<p><strong>OOP</strong>: You&#8217;ll need to be comfortable doing object-oriented programming. I don&#8217;t really have a good resource for learning this as I picked it up largely through osmosis.</p>

<p><strong>Objective-C</strong>: If you&#8217;re already familiar with a C-based OO language (C++, Java, C#) you probably won&#8217;t have too much trouble with Objective-C, even if some of its syntax seems like it was designed by developers <a href="http://www.youtube.com/watch?v=5EIu21QPQMc" title="More for me">high on LSD</a>. I started with Apple&#8217;s <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/chapter_1_section_1.html" title="Introduction to Cocoa Application Tutorial">Introduction to Cocoa Application Tutorial</a> and <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html" title="Introduction to the Objective-C Programming Language">Introduction to The Objective-C Programming Language</a>, but if you would prefer books or more in-depth information, I know a lot of people like <a href="http://www.amazon.com/Programming-Objective-C-Developers-Library-Stephen/dp/0672325861/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1229038756&amp;sr=8-1" title="Objective-C book">Stephen Kochan&#8217;s <em>Programming in Objective-C</em></a>. Note that the <a href="http://www.amazon.com/Programming-Objective-C-2-0-Developers-Library/dp/0321566157/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1229038836&amp;sr=1-2" title="Second Edition">second edition</a> is due out soon and covers Objective-C 2.0 which is what runs on the iPhone.</p>

<p><strong>Cocoa</strong>: There is no introduction to Cocoa book better than <a href="http://www.bignerdranch.com/products.shtml" title="The best Cocoa book there is">Aaron Hillegass&#8217;s <em>Cocoa Programming for Mac OS X</em></a>. Just make sure you get the 3rd Edition. There&#8217;s a lot in the book that&#8217;s not pertinent to iPhone development (garbage collection and Core Data are a couple examples), but the whole thing is really well presented and worth reading.</p>

<p><strong>iPhone</strong>: I have a few iPhone coding specific books, but haven&#8217;t really had time to go through them yet.[The iPhone Developer's Cookbook](http://www.amazon.com/iPhone-Developers-Cookbook-Building-Applications/dp/0321555457 Yummy Recipes) by Erica Sadun is very highly recommended. I also have the [iPhone SDK Developement](http://www.pragprog.com/titles/amiphd/iphone-sdk-development Beta Book) beta by Dudney, Molina, and Adamson. Finally, I have <a href="http://www.pragprog.com/titles/bdcora/core-animation-for-mac-os-x-and-the-iphone" title="Core Animation">Core Animation for Mac OS X and the iPhone</a> by Bill Dudney. Chances are pretty good that you&#8217;ll be doing some Core Animation coding as part of your iPhone app.</p>

<h3>Online</h3>

<p><strong>Apple Developer Forums</strong>: <a href="https://devforums.apple.com/community/iphone" title="Apple Developer Forums">This</a> is the official platform for asking and answering iPhone developement questions, but to be honest, I don&#8217;t use it much. I generally prefer the other online options.</p>

<p><strong>Apple mailing lists</strong>: Apple has a <a href="http://lists.apple.com/mailman/listinfo" title="Apple Mailing Lists">long list of mailing lists</a> that you can join. The most relevant for iPhone devs are Cocoa-dev (with a caveat we&#8217;ll discuss in a moment) and Xcode-users. There&#8217;s a fair amount of noise on these lists, but pay special attention to anything from Bill Bumgarner and Chris Hanson. (There are many others worth paying attention to as well, but the full list is a post of its own.) <strong>Bonus tip</strong>: The Cocoa-dev list is not intended for iPhone specific topics, which are directed to the Apple Developer Forums. However, there is a lot of overlap between Cocoa and Cocoa Touch so there&#8217;s a lot to that&#8217;s still useful discussed on this list.</p>

<p><strong>Other mailing lists</strong>: The <a href="http://groups.google.com/group/iphonesdk?hl=en&amp;pli=1" title="iPhoneSDK Google Group">iPhoneSDK Google Group</a> is another good resource, focused specifically on iPhone development, unlike Apple&#8217;s mailing lists. If you&#8217;re in the Seattle area (actually, even if you&#8217;re not), the <a href="http://lists.seattlexcoders.org/mailman/listinfo/xcoder-talk" title="xcoder-talk">xcoder-talk</a> list is also an excellent resource.</p>

<p><strong>Blogs</strong>: Here are some of the Cocoa development blogs I subscribe to, presented in no particular order.</p>

<ul>
<li><a href="http://theocacao.com/">Theocacao</a></li>
<li><a href="http://www.mac-developer-network.com/blog/">The Mac Developer Network</a> - Be sure and checkout the great podcasts here as well.</li>
<li><a href="http://inessential.com">Brent Simmons</a></li>
<li><a href="http://www.cimgf.com/">Cocoa is My Girlfriend</a></li>
<li><a href="http://mattgemmell.com/">Matt Legend Gemmell</a></li>
<li><a href="http://www.kickingbear.com/">Guy English</a></li>
<li><a href="http://www.dribin.org/dave/blog/">Dave Dribin</a></li>
<li><a href="http://katidev.com/blog/">KATI</a></li>
<li><a href="http://cocoawithlove.com/">Matt Gallagher</a></li>
<li><a href="http://www.sealiesoftware.com/blog/index.html">Greg Parker</a></li>
<li><a href="http://www.stormyprods.com/blogger/blogger.html">Stormy Productions</a></li>
<li><a href="http://www.ottersoftware.com/developer/">Otter Software</a></li>
</ul>

<h3>IRL</h3>

<p><strong>Xcoders and CocoaHeads</strong>: If you&#8217;re in the Seattle area, <a href="http://www.seattlexcoders.org/" title="Seattle Xcoders">Seattle Xcoders</a> is a fantastic resource. Seattle actually has a great concentration of expert Mac programmers, and many of them are regulars at the Xcoders meetings. If you&#8217;re not near Seattle, <a href="http://www.cocoaheads.org/" title="I want to eat their heads">CocoaHeads</a> has developer groups that meet all over the world.</p>

<h3>Conclusion</h3>

<p>Hopefully this isn&#8217;t too much information to absorb at once. To reiterate my initial points: iPhone development is neither cheap nor easy. If you&#8217;re new to Mac OS X, Objective-C, and Cocoa Touch, I&#8217;d expect it to take several weeks before you&#8217;re really being productive. However I do think the investments are definitely worthwhile. A significant portion of my day job involves writing iPhone apps, and it is the part I most look forward to.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2008/12/getting-started-with-iphone-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Proof</title>
		<link>http://krismarkel.com/yousexything/2008/07/proof/</link>
		<comments>http://krismarkel.com/yousexything/2008/07/proof/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 06:36:06 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/?p=130</guid>
		<description><![CDATA[I now have concrete proof that I have written Objective-C code worthy of including in a product.

I&#8217;ve been using FMDB on a couple projects, and found a bug and made a couple improvements. I submitted the changes to Gus and he included them in the project.

Here&#8217;s the proof: http://code.google.com/p/flycode/source/diff?r=30&#38;format=side&#38;path=/trunk/fmdb/CHANGES_AND_TODO_LIST.txt

Actually, it was only about 4 lines of [...]]]></description>
			<content:encoded><![CDATA[<p>I now have concrete proof that I have written Objective-C code worthy of including in a product.</p>

<p>I&#8217;ve been using <a title="FMDB Home" href="http://gusmueller.com/blog/archives/2008/06/new_home_for_fmdb.html">FMDB</a> on a couple projects, and found a bug and made a couple improvements. I submitted the changes to <a title="Gus Mueller's blog" href="http://gusmueller.com/blog/">Gus</a> and he included them in the project.</p>

<p>Here&#8217;s the proof: <a title="Proof of my contributions to FMDB." href="http://code.google.com/p/flycode/source/diff?r=30&amp;format=side&amp;path=/trunk/fmdb/CHANGES_AND_TODO_LIST.txt">http://code.google.com/p/flycode/source/diff?r=30&amp;format=side&amp;path=/trunk/fmdb/CHANGES_AND_TODO_LIST.txt</a></p>

<p>Actually, it was only about 4 lines of code, so I shouldn&#8217;t play it up too much, but I&#8217;m extremely proud of myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2008/07/proof/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Collection Speculation</title>
		<link>http://krismarkel.com/yousexything/2007/06/collection-speculation/</link>
		<comments>http://krismarkel.com/yousexything/2007/06/collection-speculation/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 21:42:33 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Coding]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/2007/06/collection-speculation/</guid>
		<description><![CDATA[Turns out that garbage collection for Objective-C in Leopard is not speculation (scroll to &#8220;Application Technologies&#8221;):

Leopard brings a multitude of improvements and additions to the Carbon and Cocoa application frameworks. The most visible of these is the new Core Animation framework which makes creating compelling interfaces much easier. Not as obvious, but no less important [...]]]></description>
			<content:encoded><![CDATA[<p>Turns out that <a href="http://krismarkel.com/yousexything/2007/06/xray/" title="Post speculating about garbage collection in Leopard">garbage collection</a> for Objective-C in Leopard is <a href="http://developer.apple.com/leopard/overview/" title="New technologies in Leopard">not speculation</a> (scroll to &#8220;Application Technologies&#8221;):</p>

<blockquote>Leopard brings a multitude of improvements and additions to the Carbon and Cocoa application frameworks. The most visible of these is the new Core Animation framework which makes creating compelling interfaces much easier. Not as obvious, but no less important is <strong>the addition of garbage collection to Objective-C</strong>, new controls for both Carbon and Cocoa applications, full-stack 64-bit capabilities, and a factor of ten increase in the performance of Core Data.</blockquote>

<p>(Emphasis added)</p>

<p>There&#8217;s a little more under &#8220;Objective-C 2.0&#8243; on the same page.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2007/06/collection-speculation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xray</title>
		<link>http://krismarkel.com/yousexything/2007/06/xray/</link>
		<comments>http://krismarkel.com/yousexything/2007/06/xray/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 21:30:34 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Coding]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/2007/06/xray/</guid>
		<description><![CDATA[http://www.apple.com/macosx/leopard/developer/xray.html

A cool debugging tool / paradigm included in the developer tools for Leopard.

Feature of note: Tracks garbage collection. Does this mean that Objective-C is getting &#8220;real&#8221; garbage collection? (I think I&#8217;ve read speculation along these lines.) So far, I&#8217;ve seen some tools for helping with reference counting, but nothing like Java or .NET garbage collection.

For [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apple.com/macosx/leopard/developer/xray.html" title="Xray home page">http://www.apple.com/macosx/leopard/developer/xray.html</a></p>

<p>A cool debugging tool / paradigm included in the <a href="http://www.apple.com/macosx/leopard/developer/" title="Leopard developer tools">developer tools</a> for <a href="http://www.apple.com/macosx/leopard/" title="Leopard home page">Leopard</a>.</p>

<p>Feature of note: Tracks <em>garbage collection</em>. Does this mean that Objective-C is getting &#8220;real&#8221; garbage collection? (I think I&#8217;ve read speculation along these lines.) So far, I&#8217;ve seen some tools for helping with reference counting, but nothing like Java or .NET garbage collection.</p>

<p>For me, after years of not having to worry about it <em>too</em> much, tracking references is one of the scariest aspects of Objective-C coding.</p>

<p>Of course, it could just be referring to Java garbage collection.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2007/06/xray/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Objective-C Guide for C++ Programmers (PDF)</title>
		<link>http://krismarkel.com/yousexything/2007/06/objective-c-guide-for-c-programmers-pdf/</link>
		<comments>http://krismarkel.com/yousexything/2007/06/objective-c-guide-for-c-programmers-pdf/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 22:09:47 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/2007/06/objective-c-guide-for-c-programmers-pdf/</guid>
		<description><![CDATA[http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf

Exactly what I was looking for.

Via Daring Fireball linked list.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf" title="Objective-C for C++ Programmers">http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf</a></p>

<p>Exactly what I was <a href="http://krismarkel.com/yousexything/2007/05/choosing-a-book/" title="Search for 'Rosetta Stone'">looking for</a>.</p>

<p>Via <a href="http://daringfireball.net/linked/2007/june#tue-05-chatelier" title="Daring Fireball Linked List post for this item">Daring Fireball linked list</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2007/06/objective-c-guide-for-c-programmers-pdf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Choosing a book</title>
		<link>http://krismarkel.com/yousexything/2007/05/choosing-a-book/</link>
		<comments>http://krismarkel.com/yousexything/2007/05/choosing-a-book/#comments</comments>
		<pubDate>Wed, 23 May 2007 05:50:09 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Objective-C]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/2007/05/choosing-a-book/</guid>
		<description><![CDATA[I&#8217;m the kind of person who puts in hours of research before buying a toothbrush*, so you can imagine the amount of thought that went into selecting a look for learning a new programming language and API.

First, I wanted to take into account the fact that I&#8217;m a Mac newbie. (I&#8217;ll have to tell the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m the kind of person who puts in hours of research before buying a toothbrush<a href="#footnote"><sup>*</sup></a>, so you can imagine the amount of thought that went into selecting a look for learning a new programming language and API.</p>

<p>First, I wanted to take into account the fact that I&#8217;m a Mac newbie. (I&#8217;ll have to tell the story of my switching in another post.) I&#8217;m also a Unix newbie. I&#8217;ve dabbled with a couple Linux distros, and at one point had managed to turn an old machine into a FreeBSD-based firewall, but I don&#8217;t really know any of the Unix tools beyond <a href="http://en.wikipedia.org/wiki/Man_pages" title="Wikipedia entry for Unix manual pages"><em>man</em></a> and <em>ls -af</em>. A note to other Mac newbies: I cannot recommend David Pogue&#8217;s <a href="http://www.oreilly.com/catalog/macxtigermm/" title="David Pogue's Missing Manual for Mac OS X">Mac OS X: The Missing Manual</a> highly enough. I still go back to it for keyboard shortcuts or to answer &#8220;How do I?&#8221; questions.</p>

<p>(Somewhat off topic: One of my primary motivations for purchasing a Mac was to become more comfortable and productive in front of a <a href="http://en.wikipedia.org/wiki/Bash" title="Wikipedia entry for Bash">Bash</a> prompt. I still don&#8217;t spend nearly as much time in Terminal as I&#8217;d like. I need to find a good Unix for Mac and Unix newbies book.)</p>

<p>Second, I learned pretty quickly that modern Mac programming is done using Objective-C and Cocoa. For a long time I couldn&#8217;t remember if Cocoa was the new API and <a href="http://en.wikipedia.org/wiki/Carbon_%28API%29" title="Wikipedia article on the Carbon API">Carbon</a> the old one or if it was the other way around. So I need to learn a new language in addition to an API.</p>

<p>Third, (and I really only recently realized this once I started doing some coding), I need to learn <a href="http://en.wikipedia.org/wiki/Xcode" title="Wikipedia article on Xcode">Xcode</a>. From what I can tell, <a href="http://en.wikipedia.org/wiki/Interface_Builder" title="Wikipedia article on Interface Builder">Interface Builder</a> is really the only way to create a Mac GUI for your application. I guess Interface Builder is technically a separate program, but the two seem to go hand in hand.</p>

<p>Okay, enough preface, what did I consider and how did I choose.</p>

<p>Well, as with most things these days, I started with Google. A search for [<a href="http://www.google.com/search?q=cocoa+tutorial&amp;hl=en" title="Google search for [Cocoa tutorial]&#8220;>Cocoa tutorial</a>] returned <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/chapter01/chapter_1_section_1.html" title="Cocoa tutorial from Apple">this</a> page. It was a enough to give me something to work on until I could find something more substantial. I&#8217;ll convey my thoughts on the article in another post. Executive summary: It&#8217;s a good introduction to Cocoa, Xcode, Interface Builder, and Objective-C, but it&#8217;s very, very brief.</p>

<p>My next stop was <a href="http://amazon.com" title="Amazon. They sell books and stuff.">Amazon</a>. A book search for [Objective C] and then sorting by rating and bestselling helped narrow the search. Note that if you do this, you&#8217;ll have to wade through lots on non-Objective-C books that float to the top of the list. <a href="http://www.samspublishing.com/bookstore/product.asp?isbn=0672325861&amp;redir=1&amp;rl=1" title="Programming in Objective-C by Stephen Kochan">Programming in Objective-C</a> by Stephen Kochan emerged as an early favorite. It&#8217;s highly rated, a best seller (among Objective-C books at any rate), and the reviews are largely positive. I came really, really close to buying this book.</p>

<p>However, being who I am (see the first paragraph of this post), I decided to do more research. I searched Amazon for [Learning Objective-C], [Cocoa] (that was a bust), [Cocoa programming], [Mac Cocoa Objective-C], [Learning Cocoa Objective-C], [Xcode Objective-C], and a ton of other terms. I also did tons of sorting and resorting and followed what seems like a million &#8220;customers also bought&#8221; and &#8220;customers ultimately bought&#8221; links. This brought out a few shortcomings of the Kochan book. First, it doesn&#8217;t talk about Cocoa at all. Not a lick. Second, a lot of the reviews had comments like, &#8220;This book is great if you&#8217;re new to object oriented coding!&#8221; Finally, like Cocoa, there was no Xcode. Everything was done via command line tools.</p>

<p>This led me away from my initial choice. First, I know OO coding pretty well. As it says on the <a href="http://krismarkel.com/yousexything/about/" title="About this blog">about page</a>, I&#8217;ve been doing OO coding for a while. Even when I was doing VBScript coding, I was <a href="http://msdn2.microsoft.com/en-us/library/23t9k18c.aspx" title="VBScript Class documentation">creating classes</a> for encapsulation. In JavaScript, I was creating <a href="http://mckoss.com/jscript/object.htm" title="Object Oriented Programming in JavaScript">prototypes</a> for the same reason. I&#8217;m not trying to boast here (okay, maybe a little), but I want to convey that I pretty much think in OO these days and I already know the principles like encapsulation, inheritance, and polymorphism. In terms of learning Objective-C, I really just needed a reference or &#8220;Rosetta Stone&#8221; to translate Objective-C syntax into the Java or C# equivalent and vice-versa.</p>

<p>Second, show me the Cocoa! Learning a new API is much harder than learning a language, at least for me. Most languages, especially C-based languages, are pretty concise and and have a small number of keywords. &#8220;Narrow but deep&#8221; is a good way to describe a good language. There are a small number of keywords, but lots of power. APIs, especially concerning operating systems, are broad and deep.  There&#8217;s  a ton of power, but there are many, many namespaces, classes, and methods. I don&#8217;t know how many times in C# I&#8217;ve used lines and lines of code to implement something only to later learn there was a framework call that would do it in a single line of code.</p>

<p>Finally, I knew from the <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/chapter01/chapter_1_section_1.html" title="Apple Cocoa tutorial">Apple tutorial</a> that I&#8217;d need some Xcode advice. I tried poking around the IDE on my own a few times (I used it to code some Java design pattern samples) and couldn&#8217;t really get the hang of it on my own. I have a fondness for command line tools and simple editors like emacs, but I know the power of really knowing your IDE from my experience with Visual Studio releases over the years.</p>

<p>So now I new I needed a book that included Objective-C, Cocoa, and Xcode. More searching, sorting, and following links led to <a href="http://bignerdranch.com/products/cocoa1.shtml" title="Cocoa Programming book by Aaron Hillegass">Cocoa Programming for Mac OS X</a> by Aaron Hillegass. The ability to read through the preface on Amazon (albeit of an earlier edition) and a <a href="http://books.slashdot.org/article.pl?sid=04/05/26/192224" title="Slashdot review of Cocoa Programming for Mac OS X">review on Slashdot</a> were the final selling points.</p>

<p>I&#8217;ll post my thought on each chapter as I go through them, but so far I like it. I have some issues that you&#8217;ll hear (err&#8230; read) about later, but I can easily recommend it to folks who want to learn to write Mac programs. It&#8217;s got a nice introduction to Objective-C and Xcode (and Interface Builder), and covers some important pieces of the Cocoa API.</p>

<p><a title="footnote" name="footnote"></a><sup>*</sup>This drives my wife crazy, and who can blame her.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2007/05/choosing-a-book/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Objectivecy?</title>
		<link>http://krismarkel.com/yousexything/2007/05/objective-see/</link>
		<comments>http://krismarkel.com/yousexything/2007/05/objective-see/#comments</comments>
		<pubDate>Mon, 21 May 2007 04:43:52 +0000</pubDate>
		<dc:creator>Kris Markel</dc:creator>
		
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://krismarkel.com/yousexything/2007/05/objective-see/</guid>
		<description><![CDATA[Part of learning Cocoa is learning Objective-C. I guess technically it isn&#8217;t necessary as Cocoa is an API and Objective-C is a language, but it looks like most people use them hand in hand.

For future reference, the &#8220;official&#8221; way to write (or type, I guess) the language is Objective-C, capitalized and with a hyphen. It [...]]]></description>
			<content:encoded><![CDATA[<p>Part of learning Cocoa is learning Objective-C. I guess technically it isn&#8217;t necessary as Cocoa is an API and Objective-C is a language, but it looks like most people use them hand in hand.</p>

<p>For future reference, the &#8220;official&#8221; way to write (or type, I guess) the language is <strong>Objective-C</strong>, capitalized and with a hyphen. It looks like it&#8217;s commonly written as <strong>objective c</strong>, <strong>objective-c</strong>, and <strong>Objective C</strong>. According to <a href="http://en.wikipedia.org/wiki/Objective-c" title="Wikipedia article on Objective-C">Wikipedia</a>, it&#8217;s also known as <strong>Obj-C</strong> and <strong>ObjC</strong>, though I&#8217;ve never seen either outside of that Wikipedia article. However, I&#8217;ve also only been investigating the language for a week, so I haven&#8217;t looked through that many resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://krismarkel.com/yousexything/2007/05/objective-see/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
