<?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; iPhone</title>
	<atom:link href="http://www.flickdotnet.de/index.php/categories/apple/iphone/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>Customizing an UINavigationController with title, prompt and buttons (in code)</title>
		<link>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 15:00:02 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=313</guid>
		<description><![CDATA[In the last few weeks I have seen quite a lot of different implementations how to customize the UINavigationController. When you are new to a programming language you tend to use snippets from newsgroups and blogs and often you forget to actually think about the semantics of the code. The UINavigationController examples have a huge [...]]]></description>
			<content:encoded><![CDATA[<p>In the last few weeks I have seen quite a lot of different implementations how to customize the <code>UINavigationController</code>. When you are new to a programming language you tend to use snippets from newsgroups and blogs and often you forget to actually think about the semantics of the code. The <code>UINavigationController</code> examples have a huge spectrum from being correct to awfully wrong.</p>
<p>With this blog post there will hopefully be one more correct entry on that subject. I will add some additional words with regard to memory management as well. Especially for Delphi programmers the memory management approach of iOS feels somewhat strange and takes quite some time to get used to. In my sessions I always say that there are 5 basic principles one has to consider when starting to write applications for the iPhone or iPad. Three of those five are &#8220;Patience&#8221;.</p>
<p>A <code>UINavigationController</code> can be customized that it shows the title of the current view with an optional additional prompt. Furthermore, there may be one button on the right side and one on the left. The button on the left side is mostly shown as an arrow that allows the user to navigate back to the previous view. In order to access these items you may use the property called <code>navigationItem</code>.</p>
<p>The following example sets the title of the current view that has just been loaded completely into memory. Is is not necessarily being shown yet. If you want to make sure that the title gets updated whenever the view does appear on screen, you have to use the corresponding event. That is common mistake number one. A view (or the corresponding view controller) may be only loaded once, but it can appear over and over again showing different (or the same) things.</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.title = @&quot;Details&quot;;
}
</pre>
<p>Do not forget to call the <code>viewDidLoad</code>-event of the super-class. Furthermore, if you try this example, make sure that the <code>UIViewController</code> you implement it in, actually is being handled by a <code>UINavigationController</code>. If you insert this code into a view controller that is not owned by a navigation controller, <code>self.navigationItem</code> will yield <code>nil</code>. </p>
<p>Of course, you might consider using <code>setTitle:</code> instead of using the dot-syntax. The dot-syntax is well-known from other languages, but it also has significant side-effects in the Objective-C language. However, this is the non-dot-version of the code from above:</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    [self.navigationItem setTitle:@&quot;Details&quot;];
}
</pre>
<p>This code will not crash if <code>self.navigationItem</code> is <code>nil</code>, because trying to send a message (aka calling a method) to <code>nil</code> will simply lead to nothing being executed. If this is a good thing and the view will still be able to show the information needed is another topic, but at least your app will not crash!</p>
<p>Setting up the prompt is just the same. Use the property named <code>prompt</code> or send the message <code>setPrompt:</code> to the <code>navigationItem</code>:</p>
<pre class="brush: objc;">
// Implement viewDidLoad to do additional setup
// after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    [self.navigationItem setPrompt:&quot;Please keep the &quot;
      &quot;following information confidential.&quot;];
    [self.navigationItem setTitle:@&quot;Details&quot;];
}
</pre>
<p>The buttons are the trickiest part for most developers. Just put one thing in your mind at first: </p>
<ul>
<li><code>navigationItem</code> has three properties that take care of positioning buttons. One is <code>leftBarButtonItem</code> the other is <code>rightBarButtonItem</code>. Finally, and that one is always forgotten, there is <code>backBarButtonItem</code>.</li>
<li>Second, you can only have one button on the left. If you define a back button, you cannot have another one on the left side. Period. If you define both only one will be shown and accessible to the user. The <code>backBarButtonItem</code> is always drawn with an arrow on the left side. You do not have to pay any special attention to that &#8211; iOS handles the drawing for you. If you use <code>leftBarButtonItem</code>, there will be no arrow. </li>
<li>Third, you define the back button in the view controller that shows the depending view (so-called detail view). Thinking of the mail application, the view controller that shows all your mails in a list defines the back button for the view that displays the content of one mail. About 80% of all blog posts miss to mention this tiny little detail. You always find it in the comments or further down in a thread to a specific question. That is a true time waster for beginners. However, it makes sense as the caption of the back button mostly depends on information of the view that is being left. Thus, only that view controller has the necessary data to set it.</li>
<li>Fourth, if you assign a customized button to the property of the navigation controller, this object instance is being retained. This means there is no need to use the autorelease pool when designing your custom buttons. You can simply release your button after assigning is to the property. You are done with it, so release it. Why use the autorelease pool? Almost all code snippets I found on the web use <code>autorelease</code>. There is never a reason given why the author used it. I can only conclude that he or she never really understood what the property assignment to the <code>navigationItem</code> actually does. It does retain, thus you can release the button. You do not need the reference anymore. You explicitly state a method that is being called if your button is touched. You do not need to remember the object reference yourself as the event passes the object instance of the button to you. Even then, you seldom need it. I can only think of one example for which I need the object instance of the button and that is to change is color after the touch. Well, then you can use the <code>sender</code> of the event and do not need to carry it around in your view controller. Be brave, release it, the navigation controller will take good care of it.</li>
</ul>
<p>If we keep those four aspects in mind, this leads us to the following code snippet for a custom back button:</p>
<pre class="brush: objc;">
    UIBarButtonItem *btnBack = [[UIBarButtonItem alloc] initWithTitle:@&quot;Sign off&quot;
                   style:UIBarButtonItemStylePlain
                   target:nil action:nil];
    self.navigationItem.backBarButtonItem = btnBack; // object is being retained
    [btnBack release]; // release it
</pre>
<p>Remember that this button will show if the view controller you set it in pushes a new view onto the navigation controller.</p>
<p>If I had a quarter for every time the autorelease pool is used for no good reason or memory is even being leaked, i.e. the <code>release</code> is not being called, I would be a very rich man &#8230;</p>
<p>Here you see two screenshots from an example I wrote which customizes all the parts discussed here.</p>
<p><img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Navigation.png" alt="" title="Navigation" width="414" height="770" class="alignnone size-full wp-image-332" /><br />
<img src="http://www.flickdotnet.de/wp-content/uploads/2010/10/Navigation2.png" alt="" title="Navigation" width="414" height="770" class="alignnone size-full wp-image-332" /></p>
<p>Hopefully, this very detailed post will help more developers understand the inner-workings of using multiple views in their iOS applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/10/customizing-an-uinavigationcontroller-with-title-prompt-and-buttons-in-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANN: Developer Experts App for iPhone and iPad</title>
		<link>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 14:43:05 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[DelphiExperts]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Developer Experts]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=298</guid>
		<description><![CDATA[We released yet another (free) application in the AppStore: The Developer Experts App. The app will keep you informed about all Developer Experts events and will allow you to purchase additional course materials in the near future. However, update 1 will introduce Push Notifications so that you will be pinged whenever something interesting happens in [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">We released yet another (free) application in the AppStore: <strong>The Developer Experts App</strong>. The app will keep you informed about all Developer Experts events and will allow you to purchase additional course materials in the near future.</p>
<p style="text-align: left;">However, update 1 will introduce Push Notifications so that you will be pinged whenever something interesting happens in the world of Developer Experts. Push Notifications will notify you about upcoming events and current releases in the world of Delphi, .NET and Objective-C.</p>
<p style="text-align: left;">Just go to the AppStore and search for &#8216;Developer Experts&#8217;. US-based customers may click the AppStore logo to go to the app:<br />
<span class="apps"><a id="Bild" href="http://www.flickdotnet.de/wp-content/plugins/appstore/AppStore.php?appid=391265334" target="_blank"><img id="Image" align="left" src="http://www.flickdotnet.de/wp-content/plugins/appstore/cache/391265334.png" alt="Developer Experts - Stay up to date (AppStore Link) " /></a> <span id="Titel">Developer Experts - Stay up to date</span><br /> <span id="Hersteller">Hersteller: </span> <a href="" target="_blank">Holger Flick</a><br /> <span id="Freigabe">Freigabe: </span>4+<br /> <span id="Preis">Preis: </span>Kostenlos <span id="Download"></span><a href="http://www.flickdotnet.de/wp-content/plugins/appstore/AppStore.php?appid=391265334" rel="nofollow" target="_blank" >Download</a></span><div style="clear: both"></div><br />
<img class="size-medium wp-image-304 aligncenter" title="appstore" src="http://www.flickdotnet.de/wp-content/uploads/2010/09/appstore.png" border="0" alt="" width="159" height="55" />
</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-300" title="devexapp" src="../wp-content/uploads/2010/09/devexapp.png" alt="" width="386" height="742" border="0"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/09/ann-developer-experts-app-for-iphone-and-ipad/feed/</wfw:commentRss>
		<slash:comments>0</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>NSString: Using stringWithFormat and left pad integers with zeros</title>
		<link>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 04:41:07 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=257</guid>
		<description><![CDATA[Today, I wanted to display a time-value of 9 minutes and 3 seconds like this: 09:03 Thus, I typed this snippet into my Objective-C code: labelTimer.text = [NSString stringWithFormat:@"%2d:%2d", minutes, seconds ]; [/code] This did not yield the result I wanted. The numbers were padded with spaces, not zeros. Sadly, Apple left out the options [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I wanted to display a time-value of 9 minutes and 3 seconds like this: <tt>09:03</tt></p>
<p>Thus, I typed this snippet into my Objective-C code:<br />
<code><br />
labelTimer.text = [NSString stringWithFormat:@"%2d:%2d", minutes, seconds ];<br />
[/code]</p>
<p>This did not yield the result I wanted. The numbers were padded with spaces, not zeros. Sadly, Apple left out the options for the different format specifiers like f, d, @ ... completely. You have to rely on old C skills in order to know how to pad with zeros or format decimal numbers the way you want. As a side-note, if you have a float and want to format it with 2 decimals, use <tt>%.2f</tt>. In order to pad zeros, you have to use <tt>%02d</tt> in this case, which leads to the following snippet in Objective-C code:</p>
<p></code><code><br />
labelTimer.text = [NSString stringWithFormat:@"%02d:%02d", minutes, seconds ];<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/04/nsstring-using-stringwithformat-and-left-pad-integers-with-zeros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>libxml: Memory Management and leaks in Frameworks you consider &#8216;safe&#8217;</title>
		<link>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/</link>
		<comments>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 03:39:25 +0000</pubDate>
		<dc:creator>holger</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.flickdotnet.de/?p=255</guid>
		<description><![CDATA[If you have ever written code in Java or .NET, you will truly learn to appreciate the garbage collection, i.e. objects that are no longer referenced are being freed from memory. Automatically no less. A lot of people do not like it for reasons of their own and I do not want to get into [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever written code in Java or .NET, you will truly learn to appreciate the garbage collection, i.e. objects that are no longer referenced are being freed from memory. Automatically no less.</p>
<p>A lot of people do not like it for reasons of their own and I do <strong>not</strong> want to get into those.</p>
<p>What I do want to discuss is that in an environment in which you are responsible to allocate and free memory yourself (like Delphi, C++, Objective-C), you might stumble about issues with frameworks or base classes you use.</p>
<p>In my case it was the libxml part of the iPhone OS which allows you to parse XML documents. (I even now of Delphi developers using this library to parse large documents). Its biggest advantage is that the xml document is not read in one go but step-by-step in chunks. The developer can hook into it with an event-driven approach and can thus interpret the file. However, during the parse operation the library tends to produce memory leaks that cost me two hours of debugging.</p>
<p>With iPhone applications it is very simple: the iPhone is a mobile device with limited memory. If you produce too many leaks in a certain amount of time, you will not have many customers using your application as it might crash frequently (it might not even be accepted if you want to deploy to the Apple AppStore due to this fact). This makes you very aware of producing code that produces absolutely no memory leaks of any sort. Apple delivers Instruments so that you can debug your code for memory leaks. As I was not familiar with the tool, I did not realize at first that the leak did occur in the library and not in or because of code I had written.</p>
<p>Now comes the important part: formulate a rule. I do not want to waste another minute because of issues that are in 3rd party code. However, it is not as easy, because it might not be the 3rd party library but you not handing over the data to the library correctly (especially when dealing with different languages and use DLLs e.g.). To state the rule &#8216;Always check the call stack where the leak originates.&#8217; will not suffice. An example for this is that you allocate memory for an object instance and then hand a reference to this instance to a function or method. The method allocates memory again and returns another reference instead of using the one you provided. In that case you are responsible for the leak. Documentation needs to be clear in cases like this.</p>
<p>I think that fact is the biggest pro for garbage collection. Some people might call it lazy, but I prefer it considering how much time I spent when writing iPhone applications thinking  of proper memory management. iPhone OS comes with strict guidelines how to name methods so that you know if the caller or the function is responsible to allocate and free the memory which makes it easier, but it is still difficult enough.</p>
<p>As a final point, please be aware that my googling and analysis really points to a method in the parser of libxml leaking some bytes when parsing a document. In case you develop an iPhone app and use libxml, do not worry about the leaks that Instruments shows you that derive from a call to the parse mehod of the xml parser &#8212; not your fault.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flickdotnet.de/index.php/2010/04/libxml-memory-management-and-leaks-in-frameworks-you-consider-safe/feed/</wfw:commentRss>
		<slash:comments>2</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>

