<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FlickDotNet.de - Holger&#039;s Take on Software Development &#187; Xcode</title>
	<atom:link href="http://www.flickdotnet.de/index.php/categories/apple/xcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flickdotnet.de</link>
	<description>Opinions, Reviews, Tutorials for Software Developers - Apple iOS, Microsoft .NET and Delphi</description>
	<lastBuildDate>Tue, 26 Jul 2011 17:32:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Making Apps Developer Days by Developer Experts and MacWelt</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 15:46:48 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Developer Experts]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=348</guid>
		<description><![CDATA[With regard to my recent posts I would like to point out two events that will be held in Germany in November. Both events focus on development for iOS 4 and are scheduled as a two-day workshop. Day 1 will give an introduction to iOS 4 development, Objective-C in particular, and the development tools needed [...]]]></description>
			<content:encoded><![CDATA[<p>With regard to my recent posts I would like to point out two events that will be held in Germany in November. Both events focus on development for iOS 4 and are scheduled as a two-day workshop.</p>
<p>Day 1 will give an introduction to iOS 4 development, Objective-C in particular, and the development tools needed to write apps. Whereas day 2 will be more hands-on and will give attendees the chance to start with a small demo project with guidance from Daniel Magin and Olaf Monien.</p>
<p>I have been invited to take part and will be presenting some content as well. As my current work at University includes app development with iOS 4, my main focus will be to give practical advise and some in-depth analysis on various topics. When time allows, I might just show some code snippets from apps that are in the AppStore already. <img src='http://www.flickdotnet.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Hopefully, it will allow attendees to take the initial hurdles with Objective-C easier.  </p>
<p>If you are interested click <a href="http://tinyurl.com/2aw6lym">here</a> to view the complete agenda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/making-apps-developer-days-developer-experts-and-macwelt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS: Does this property or method retain my object instance?</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 15:30:04 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=337</guid>
		<description><![CDATA[I already mentioned in earlier posts that it is quite tricky when beginning with iOS to decide whether one has to release an object instance or not. Sure, we have the golden rule number one: If I use alloc, copy or new to create an object instance, I own it and need to call release [...]]]></description>
			<content:encoded><![CDATA[<p>I already mentioned in earlier posts that it is quite tricky when beginning with iOS to decide whether one has to release an object instance or not.<br />
Sure, we have the golden rule number one:</p>
<blockquote><p>If I use <code>alloc</code>, <code>copy</code> or <code>new</code> to create an object instance, I own it and need to call <code>release</code> as soon as I do not need it anymore (or <code>autorelease</code>).</p></blockquote>
<p>This sounds simple, but people often state</p>
<blockquote><p>After calling <code>release</code>, the object is being removed from memory, so I cannot call <code>release</code> unless I am certain nobody is using it anymore.</p></blockquote>
<p>Sadly, that statement is simply wrong. On the one hand you should never even think about when an object is being removed from memory when coding in Objective-C with iOS in the first place. However, on the other hand you never need to consider &#8216;other parties&#8217; when releasing or retaining. If another party needs the object instance it will have called <code>retain</code> for certain which means that the object is not being removed when you call <code>release</code> in your code. If the other party did not call <code>retain</code>, their programming is flawed, but you can never assume that and keep your object instances around without calling <code>release</code>.</p>
<p>So, getting back at the inititial question how to decide if another method or property does call <code>retain</code> or not. It is quite easy to see if you know where to look. Apple delivers the complete source code for the headers with iOS. Yes, source code. But think again. I said &#8216;header files&#8217;. No implementation is given away, just the specification of the classes etc. which you find in the header file.</p>
<p>Xcode has a wonderful means to get you exactly to the right location in a header file that yields the result. You can also use the quick help feature which also lists the declaration of a property, but lacks the retain-information for methods. </p>
<p>Let us look at two examples.</p>
<pre class="brush: objc;">
  // example 1
  self.navigationItem.backBarButtonItem = backButton;

  // example 2
  NSMutableArray *names = [[NSMutableArray alloc] init];
  NSString *captain = [[NSString alloc] initWithString:@&quot;Jean-Luc&quot;];
  [names addObject:captain];
  [captain release];

  // sometime later

  [names release];
</pre>
<p>Example 1 is pretty brief as I talked about it in my last blog post with regard to the <code>navigationItem</code>. I am not going into any release or retain-discussions here. However, what does the assignment do exactly?<br />
Type the code into Xcode and hold down the Option-key and double-click <code>backBarButtonItem</code>.<br />
You will get the following hint:<br />
<img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Quickhelp.png" alt="" title="Quickhelp" width="530" height="165" class="alignleft size-full wp-image-339" /><br />
This is all you need. It clearly gives you the information that you need to pass an instance of  <code>UIBarButtonItem</code> and that the object is going to be retained. Time needed to assure yourself? 1 second. Xcode is very good in that regard. </p>
<p>Of course, you can also hold down the Command-key and double-click <code>backBarButtonItem</code>. This will not show you any help document, but will prompt you to select if you want more information about the property declaration or the setter method of the poperty. If you try both options you will find out that both lead to the same line of code in the  declaration as the property is synthesized and no custom set-method has been specified. You will navigate to source code of the header declaration of <code>UINavigationBar</code>. The property is declared as follows.</p>
<pre class="brush: objc;">
  @property (nonatomic,retain)
       UIBarButtonItem *backBarButtonItem;
</pre>
<p>Yet again, the same information we got from the quick help. Many roads lead to Rome it seems.</p>
<p>Thus, remember to make use of the navigation features of Xcode. Command-double-click takes you to the source. Option-double-clicking a property or method shows a quick help window. Very helpful. I wish there was a way to invoke that while watching &#8216;Lost&#8217; now and then.</p>
<p>Finally, let us inspect example number 2. It comes naturally to us to release objects that we add to an <code>NSArray</code> as we learned that <code>addObject:</code> does indeed retain object instances. Where can we find that info? Sadly, neither the quick help nor the detailed help for <code>addObject:</code>which you can invoke with a Command-Option-double click gives any hints if retain is being called. You need to have a look at a guide called &#8220;Collections Programming Topics&#8221; in the help. You can retrieve this guide in PDF format as well, which is great. There you can find the following statement in the section about arrays:</p>
<blockquote><p>In a managed memory environment, an object receives a retain message when it’s added; in a garbage collected environment, it is strongly referenced. When an array is deallocated in a managed memory environment, each element is sent a release message.</p></blockquote>
<p>Phew. It is documented, but it is very hard to find. It would be great if we could find a comment in the header file or some information in the help for <code>addObject:</code>. The documentation of iOS is very detailed and easy to navigate. But in this instance there is desperate need for improvement.</p>
<p>Thus, summing up our example number 2, we can release <code>captain</code> after adding the object instance to the array as the array owns it now and we may let go if we do not need it anymore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/ios-dretain/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>iOS: Activating InApp Purchases and the issue with invalid Product IDs</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 08:43:35 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[InApp Purchase]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=293</guid>
		<description><![CDATA[It is being discussed quite a lot on the internet that it is very difficult to get started to develop applications with InApp Purchases. Most of the times developers report that the SKProductsRequest does not yield any result or reports the Product ID of the feature as invalid. To make this post brief: most of [...]]]></description>
			<content:encoded><![CDATA[<p>It is being discussed quite a lot on the internet that it is very difficult to get started to develop applications with InApp Purchases. Most of the times developers report that the SKProductsRequest does not yield any result or reports the Product ID of the feature as invalid.</p>
<p>To make this post brief: most of the issues discussed do not exist if you follow the step-by-step guide 100%. However, I got hit by an issue that none of the post addressed:</p>
<ul>
<li>my product called EniRemote is already in the store, it has no InApp Purchases</li>
<li>I want to use InApp Purchases for the update</li>
<li>on my device that is also used for development, I have EniRemote installed, however, the AppStore version, not the developer version</li>
</ul>
<p>I followed Apple&#8217;s documentation 100%. However, all my IDs were still reported as &#8216;invalid&#8217;. Where did I mess up? First, I waited a couple of hours as a lot of developers claim it takes about 12-24 hours for the AppStore to update. I tried again this morning, the issue prevailed.</p>
<p>Then I remembered that my device had the AppStore version installed. I was able to deploy my app to the device without any issues. It also ran in development mode, however, the application always ran in an environment that was created by the AppStore version. Thus, it always must have queries the live-store, not the sandbox.</p>
<p>How did I fix this? Very easy! I removed the app from my device and deployed it again by debugging it in Xcode. My Product IDs were immediately listed as valid and I can use In-App purchases.</p>
<p>Thus, when using InApp features, make sure that you do only use app environments that have been created by Xcode and not the AppStore. It will not work unless you delete any &#8216;live-version&#8217; of the app that has been downloaded from the AppStore first.</p>
<p>I really hope this will help some folks to save some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/ios-activating-inapp-purchases-and-the-issue-with-invalid-product-ids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to set up EniRemote</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:19:26 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=288</guid>
		<description><![CDATA[A few people complained that EniRemote would not work properly. Please be aware that you have to set up the App before you can use it. In order to connect to your Dreambox, EniRemote needs the IP and credentials. You have to use the Settings application on your iPad and select EniRemote on the left [...]]]></description>
			<content:encoded><![CDATA[<p>A few people complained that EniRemote would not work properly. Please be aware that you have to set up the App before you can use it. In order to connect to your Dreambox, EniRemote needs the IP and credentials.</p>
<p>You have to use the Settings application on your iPad and select EniRemote on the left side to enter that information:</p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/settings.png"><img class="alignnone size-medium wp-image-289" title="Settings for EniRemote" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/settings-300x180.png" alt="" width="300" height="180" /></a></p>
<p>SSL encryption is not supported.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/how-to-set-up-eniremote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EniRemote released in AppStore</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:13:53 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=286</guid>
		<description><![CDATA[EniRemote for iPad has been released in Apple&#8217;s AppStore! Right now it is not available in all countries yet, but it will be released in all countries. The App is free for a limited time. If you have an iPad and a Dreambox running with the Gemini Image, be sure to check it out. Here [...]]]></description>
			<content:encoded><![CDATA[<p>EniRemote for iPad has been released in Apple&#8217;s AppStore!</p>
<p>Right now it is not available in all countries yet, but it will be released in all countries. The App is free for a limited time.</p>
<p>If you have an iPad and a Dreambox running with the Gemini Image, be sure to check it out.</p>
<p>Here is the link for the US AppStore:</p>
<p><a href="http://itunes.apple.com/app/eniremote/id386161917?mt=8#">http://itunes.apple.com/app/eniremote/id386161917?mt=8#</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/eniremote-released-in-appstore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing EniRemote for iPad, a remote for any DreamBox set-top box with Gemini Image (Enigma2) &#8230;and a hint for Delphi programmers</title>
		<link>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 17:48:56 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[EniRemote]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=276</guid>
		<description><![CDATA[Finally, I am able to announce my first iPad project written in Objective-C and Xcode, written in association with DeveloperExperts, LLC. One can hardly believe how hard-felt the &#8220;finally&#8221; is. I have been programming since 1988 and Objective-C has been the toughest programming language yet. My biggest issue was getting used to the strange way [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, I am able to announce my first iPad project written in Objective-C and Xcode, written in association with DeveloperExperts, LLC. One can hardly believe how hard-felt the &#8220;finally&#8221; is. I have been programming since 1988 and Objective-C has been the toughest programming language yet. My biggest issue was getting used to the strange way how memory allocation and deallocation is handled. It might be me, but it took quite some getting used to. Actually, I undertook my first steps in Objective-C in 2008. However, I really got into it after the seminar I attended in April 2010. Evan Doll, Daniel Magin and Olaf Monien held a workshop with the basics about iPhone-App Development (Making Apps).</p>
<p>Thus, before I introduce you all to my latest app, let me highly recommend their workshop that will take place in <a href="http://www.amiando.com/delphitageBerlin1.html">September in Berlin, Germany</a>. Why did I blog about it here? It is a special workshop for people who have programming skills in Delphi already and want to start with the iPhone/iPad as well. Again, I can only underline how good this workshop is to get started building mobile applications on Apple&#8217;s mobile iOS platform. Furthermore, there is a whole day dedicated to Delphi and the German Delphi days two days later. If that is not a reason for booking a trip&#8230; so, hurry, before all places are taken!</p>
<p>Now back to EniRemote. The application is still being reviewed by Apple while I am writing this. However, I have a team of about 10 beta testers that already had access to the application and judged that it was ready for general distribution. Thanks guys! Sadly, the application that will be published in the App Store is already one week old and is lacking some feature improvements that I already made this week.</p>
<p>As I already said, EniRemote allows you to control your DreamBox from anywhere as long as you connect to it via HTTP. It currently does not support SSL in order to circumvent any encryption/export restrictions that might exist. The phrase &#8216;control your DreamBox&#8217; has many interpretations. Firstly, you have a huge remote control-like view that allows you to mimic any of the keys you can press on your physical remote control. This alone is a huge improvement for me as the DreamBox 800 PVR HD has a very picky remote sensor &#8230;</p>
<p><img class="aligncenter size-full wp-image-277" title="Landscape orientation of Remote Control view" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/remote-land.png" alt="" width="500" height="384" /></p>
<p>Furthermore, the app allows easy zapping and browsing of service EPGs. Even the picons of the channels in different bouquets are downloaded from the box and cached on the iPad device. We do not ship any of the channel icons with the application. Please not that all logos displayed in the screenshots belong to their copyrightholders and these images are shown as an example to illustrate the functionality of the application. I use the Picon Icon Set by LicherPils which is being published on the I-Have-A-DreamBox boards. Right now the bouquets are fully controlled by the box settings. We are planning however to offer a favorite list of channels that can be assembled on the iPad and needs no change of any settings on the box.</p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/channels.png"><img class="aligncenter size-full wp-image-278" title="Services of one bouquet" src="http://www.flickdotnet.de/wp-content/uploads/2010/08/channels.png" alt="" width="500" height="384" /></a></p>
<p><a href="http://www.flickdotnet.de/wp-content/uploads/2010/08/example-epg.png"><img class="aligncenter size-full wp-image-280" title="Episode guide loaded from box." src="http://www.flickdotnet.de/wp-content/uploads/2010/08/example-epg.png" alt="" width="500" height="666" /></a></p>
<p>Recordings are also being displayed and you can take a screenshot if the grab plugin is installed on your box.</p>
<p>We do not support timers as of yet, but work has started to offer that feature. Furthermore, the next release will offer support to connect to more than one box. You will be able to create box settings profiles.</p>
<p>Maybe you own a DreamBox and will give the app a shot as soon as it will be released in the AppStore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/08/announcing-eniremote-for-ipad-a-remote-for-any-dreambox-set-top-box-with-gemini-image-enigma2-and-a-hint-for-delphi-programmers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programming on the Mac/iPhone</title>
		<link>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:15:22 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=239</guid>
		<description><![CDATA[In my last post I spilled where my major focus lies right now. I am looking at something completely different: not a new language, but a new language, with new tools on a different platform. And believe me, it is different. Why different? Well, not only is the syntax of the programming language on Mac [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I spilled where my major focus lies right now. I am looking at something completely different: not a new language, but a new language, with new tools on a different platform. And believe me, it is different.</p>
<p>Why different? Well, not only is the syntax of the programming language on Mac very odd getting used to for a Delphi or C# developer, but even more using the computer is also needing some time getting used to. Shortcuts are different, there are way less visible shortcuts than on a Windows system and the general approach how to get things done is very much different. With regard to the shortcuts it is sometimes a real pain to find them and they often differ from application to application. Mac OS is very much designed for mouse users, it seems, and keyboard enthusiasts will have to read the docs carefully. A lot of people claim that it is easier and more intuitive to get started, especially if you have not used Windows before. I would not sign that statement as Mac OS has also quite some oddities just as Windows has. Just yesterday, I dragged a file onto my desktop which did not show. When I dragged it again, Mac OS told me the file was already there and if I wanted to overwrite it. Thus, it is not without flaws either. And ever since Windows 7 one can completely forget the generalization &#8220;Mac is more stable than Windows&#8221;. My Windows systems are just as stable. However, I am derailing from my train of thoughts&#8230;</p>
<p>&#8220;How would one get started to code on the Mac or code applications for the iPhone?&#8221; was the question I had to get an answer to. Firstly, give yourself time to get used to the system.  Do not try to start developing right away. It will not work. Believe me. I tried. Give it some time. Fiddle around with a Mac system at least for 1 or 2 moths before you start developing. You need to get some insight in how the system works, how applications are assembled etc. This will not happen in a week and you definitely cannot read it in a book and hope to get the same understanding as learning by doing. Of course, a book to get started with Mac OS can help. Maybe, you are as lucky as me and have some hardcore Apple Affiliates at your workplace you can nag all day long&#8230; They will forgive you for the frequent interruptions sooner or later (thanks, Volker&#8230; <img src='http://www.flickdotnet.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p>Secondly, get the tools for the job. With Apple it is very easy to get the right tools in order to develop Applications for the platform as the company publishes the development environment with the operating system itself. Be sure to have a look at your Leopard DVD and install the additional features. Besides, you will miss the command-line tools after a month or so anyways and they are there as well.</p>
<p>The main development environment is called Xcode and if you ever dare to load one of the sample projects you will be overmanned. Yes, you will. There is no way around it. The code simply hits you and it might result in an abrupt thought that may say something like &#8220;How did I ever think to develop for this platform in that language?&#8221; &#8212; It definitely feels like that at first.</p>
<p>Thus, get a book. Or get two actually. One is free, the other is not. I started learning the language with a book that is just about the language. Not about any platform. Just the language. The book is called &#8216;Programming in Objective-C 2.0&#8242; bz Stephen Kochan and it gives you a very good introduction and gets you used to the funny syntax. Funny is an adjective every Delphi developer I know has used so far for that particular syntax.</p>
<p>For me it was very clear that I wanted to develop applications for the iPod Touch and iPhone. Thus, book number two. Apple has a huge archive of free documentation that comes in a very printer-friendly PDF format. The PDFs are seperated by certain topics, not just a simple reference that has been generated from source files or generated in some other way. It is like a big library at your fingertips. I read quite a few of them and they are very good to read and contain lots of useful information. Access is granted if you join the iPhone Developer Program. Unlike frequent misinformation about this topic, joining this program is free of charge. You get all the documentation and all the programming tools for free. No charge. Not once, not yearly. The only thing you are being charged for on a yearly basis is the ability to deploy to physical devices. There are several different subscription packages available, but in order to get started, you can use the free account. The software development kit (SDK) even comes with an iPhone simulator that allows you to test your application like it was running on an actual physical device. There are only a few restrictions that make using a physical device a necessity. But believe me, these will not affect you in the first couple of weeks of developing applications.</p>
<p>When you got your login details, you can use your iTunes Account as a sidenote, you can download the SDK which includes all the tools you need. Furthermore, during the download I had lots of time to read as the SDK is huge and take a long time to download through my pitiful bandwidth of 2MBits.</p>
<p>After the download, installation is only a double-click away and takes from 10 to 30 minutes. Be sure to drag Xcode into the dock &#8211; you will need it all the time.</p>
<p>But how to get started? Well, Daniel Magin suggested a book to me and that really got me started:</p>
<ul>
<li> iPhone SDK 3 (Visual QuickStart Guides) by Duncan Campbell</li>
</ul>
<p>It gives an introduction with use-cases to the most important classes that you need to use in any project and it also describes all the visual components hands-on. After reading this book &#8211; it is not that big, so I did read it completely -  you are able to write little apps and are ready to dive into the details. Oh, and be sure to download the free bonus chapters of that book. I did that with two books from Apress from the same group of authors:</p>
<ul>
<li>Beginning iPhone 3 Development: Exploring the iPhone SDK by Dave Mark and Jeff Lamarche</li>
<li>More iPhone 3 Development: Tackling iPhone SDK 3</li>
</ul>
<p>Those will keep you busy, but afterwards you will be ready to write applications for the iPhone for sure. Patience is most important while typing the new language. Furthermore, Xcode is very different when entering source code. If it felt strange using Visual Studio when being used to Delphi, it is like that&#8230;</p>
<p>For the German audience one additional hint. The German Mac keyboard is a bit odd as it has not all keys printed completely. E.g. the {} and [] are nowhere to be found. I have no idea why the German Apple keyboards are built that way. Furthermore, typing source code on a German keyboard is very clumsy. Due to that,  I have coding-keyboard with US typeface, so that I can type source code more easily. It helps quite a lot.</p>
<p>Next time I will introduce you to some architectural ideas and implementations I am dealing with right now. I have some applications that need to work on a Windows Desktop as well as offer access using the iPhone. Furthermore, a web application is not an option  I consider for the iPhone. The usability employing a native iPhone application is just so much better in my opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/03/programming-on-the-maciphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

