<?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>iCodeBlog &#187; iPhone Articles</title>
	<atom:link href="/category/iphone-articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://icodeblog.com</link>
	<description>iPhone Programming Tutorials</description>
	<lastBuildDate>Wed, 22 Sep 2010 00:14:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>iAd To Debut Tomorrow</title>
		<link>http://icodeblog.com/2010/06/30/iad-to-debut-tomorrow/</link>
		<comments>http://icodeblog.com/2010/06/30/iad-to-debut-tomorrow/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 18:43:50 +0000</pubDate>
		<dc:creator>wolfgang</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iAd]]></category>
		<category><![CDATA[iOS 4]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=2054</guid>
		<description><![CDATA[<a href="/2010/06/30/iad-to-debut-tomorrow/"><img align="left" hspace="5" width="150" height="100" src="/wp-content/uploads/2010/06/iad1-150x100.jpg" class="alignleft tfe wp-post-image" alt="iad" title="iad" /></a>Apple will be rolling on its iAd service on Thursday and open up a potentially very lucrative revenue source for application developers as well as another revenue source for itself. It’s a high-rollers market now, but don’t expect mass advertisers to be playing ball just yet.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F30%2Fiad-to-debut-tomorrow%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F30%2Fiad-to-debut-tomorrow%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iAd,iOS+4,iphone" height="61" width="50" /><br />
			</a>
		</div>
<p>Apple will be rolling on its <a href="http://advertising.apple.com/">iAd service</a> on Thursday and open up a potentially very lucrative revenue source for application developers as well as another revenue source for itself. It’s a high-rollers market now, but don’t expect mass advertisers to be playing ball just yet.</p>
<p>Recent reports indicated that iAds are commanding huge premiums. The first row of advertisers is reportedly shelling out at least $1 million each for the privilege to get advertising exposure. If you intend to cover channel exclusivity, the price can top $10 million. Apple recently <a href="http://www.apple.com/pr/library/2010/06/07iads.html">said </a>that it has already sold $60 million in committed ads – which Apple claims is about half of the total committed ad spending for mobile platforms this year. Among the first advertisers are AT&amp;T, Best Buy, Campbell Soup Company, Chanel, Citi, DirecTV, GEICO, GE, JCPenney, Liberty Mutual Group, Nissan, Sears, State Farm, Target, Turner Broadcasting System, Unilever and The Walt Disney Studios.</p>
<p>iAd pricing is the highest in the mobile segment, as far as we know. Banners get $10 for 1000 hits, once click gets $2. It is interesting to note that all ads will be targeting the iPhone initially, as iOS 4 will not be available for the iPad until November. AppleInsider recently wrote that most advertisers are still in the early planning stages for their iAd campaigns and that they aren’t ready to roll their ads out just yet. By the end of the year, iAds should have much greater traction.</p>
<p>Some advertising agencies seem to be unhappy about the fact that Apple controls the technical production of iAds itself. According to AdAge, Apple tells advertisers that it takes about 6 – 8 weeks to run an ad after the artwork has been delivered. However, this fact does not seem to turn down many customers.</p>
<p>&#8220;Any brand that does it is instantly aligned with Apple,&#8221; said Darrell Whitelaw, creative director of mobile shop MIR, which is designing Citi&#8217;s iAd, in an interview with <a href="http://adage.com/digital/article?article_id=144670">AdAge</a>. &#8220;It&#8217;s instant credibility, instant cool. You&#8217;re on the new iPhone 4; it really is the one way you can align yourself with that little Apple logo.&#8221;</p>
<p>iAds require iOS 4, which means that the iPad will not get iAds for now. However, AdAge said that it has noticed iPad campaigns being scheduled for November, which would mean that iOS 4 will be coming to the iPad in that time frame. </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2010/06/30/iad-to-debut-tomorrow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iOS 4: Please start your engines.</title>
		<link>http://icodeblog.com/2010/06/23/ios-4-please-start-your-engines/</link>
		<comments>http://icodeblog.com/2010/06/23/ios-4-please-start-your-engines/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 18:07:02 +0000</pubDate>
		<dc:creator>wolfgang</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iOS4]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=2032</guid>
		<description><![CDATA[<a href="/2010/06/23/ios-4-please-start-your-engines/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2010/06/ios4-150x150.jpg" class="alignleft tfe wp-post-image" alt="ios4" title="ios4" /></a>It is not particularly difficult to figure that Apple will push this release hard. There is some competition out there and we expect Apple to step up the marketing game even more, which should create new ways to ride in Apple’s tailwind to market your application. Make sure you are ready for this opportunity. It’s a growing market that quickly rewards your creativity and innovation.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F23%2Fios-4-please-start-your-engines%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F23%2Fios-4-please-start-your-engines%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iOS4" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="/wp-content/uploads/2010/06/ios4.jpg"><img class="size-full wp-image-2033 alignleft" title="ios4" src="/wp-content/uploads/2010/06/ios4.jpg" alt="" width="157" height="160" /></a>If you haven’t done so yet (not that we believe you didn’t), it’s a good time now to have a closer look at Apple’s new iOS 4, which was officially rolled out yesterday.</p>
<p>So we have known about it for two months and talked about it a <a href="../../../../../2010/04/08/iphone-os-4-0-the-death-of-the-3gmu/">couple times</a>. In numbers, there are 100 new features and access to more than 1500 APIs, with details being provided by Apple on its <a href="http://developer.apple.com/technologies/iphone/whats-new.html">SDK site</a>.</p>
<p>There is a lot of focus on the new features (Ars Technica has the most thorough <a href="http://arstechnica.com/apple/reviews/2010/06/ars-reviews-ios-4-whats-new-and-notable.ars">first look</a> we have seen so far), but given Apple’s emphasis on iOS 4, the real news may not be so much new APIs or features, such as multitasking, per se. It’s the collective opportunity behind it.</p>
<p>Of course, there will be a race who will have the first apps out that use some of those new features, but it may the app that finds a way to take an intuitive approach to leverage iOS 4 features that will come out on top. It is a comprehensive update that can be overwhelming and clearly needs some thought. Perhaps that was the reason why Apple has given us more than two months to prepare for this release, if you think about it.</p>
<p>It is not particularly difficult to figure that Apple will push this release hard. There is some competition out there and we expect Apple to step up the marketing game even more, which should create new ways to ride in Apple’s tailwind to market your application. Make sure you are ready for this opportunity. It’s a growing market that quickly rewards your creativity and innovation.</p>
<p>We will spending quite a bit of time with iOS4 over the next few weeks, so make sure you check back frequently. </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2010/06/23/ios-4-please-start-your-engines/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone 4 Could Propel Apple to 100 million users</title>
		<link>http://icodeblog.com/2010/06/21/iphone-4-could-propel-apple-to-100-million-users/</link>
		<comments>http://icodeblog.com/2010/06/21/iphone-4-could-propel-apple-to-100-million-users/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 20:49:41 +0000</pubDate>
		<dc:creator>wolfgang</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=2027</guid>
		<description><![CDATA[<a href="/2010/06/21/iphone-4-could-propel-apple-to-100-million-users/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2010/06/iphoneicode-150x150.jpg" class="alignleft tfe wp-post-image" alt="iphoneicode" title="iphoneicode" /></a>It is no secret anymore that Apple is shattering pre-sales records with the new iPhone. Apparently, more than 600,000 phones have been ordered in just one day. What is much more interesting, are the forecasts just how far this new phone can go. Morgan Stanley’s Katy Huberty thinks  Apple may be able to expand its user base to 100 million iPhone owners and users. She believes that about 42 million fourth-generation iPhones could be sold by the end of the year.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F21%2Fiphone-4-could-propel-apple-to-100-million-users%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2010%2F06%2F21%2Fiphone-4-could-propel-apple-to-100-million-users%2F&amp;source=elctech&amp;style=normal&amp;hashtags=apple,iOS,ipad,iphone" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="/wp-content/uploads/2010/06/iphoneicode.jpg"><a href="/wp-content/uploads/2010/06/iphoneicode.jpg"><img class="alignnone size-medium wp-image-2028" title="iphoneicode" src="/wp-content/uploads/2010/06/iphoneicode-300x184.jpg" alt="" width="300" height="184" /></a></a></p>
<p>It is no secret anymore that Apple is shattering pre-sales records with the new iPhone. Apparently, more than 600,000 phones have been ordered in just one day. What is much more interesting, are the forecasts just how far this new phone can go. Morgan Stanley’s Katy Huberty <a href="http://tech.fortune.cnn.com/2010/06/17/whats-driving-iphone-4-sales/">thinks</a> Apple may be able to expand its user base to 100 million iPhone owners and users. She believes that about 42 million fourth-generation iPhones could be sold by the end of the year.</p>
<p>We know that Huberty is usually among the more optimistic analysts – especially since her rather controversial iPad sales predictions, but even if she is slightly off, those numbers are huge. Huberty thinks that the iPhone 4 is attractive enough so that Apple can triple its user base within 18 months. That should have some impact on its market share which is currently just above 5% of the entire cell phone market, according to Gartner.</p>
<p>So what does that mean for application developers? Obviously that’s good news as the market expands and iPhone/iPad users are getting more and more used to how those apps of a smartphone or tablet work. However, there is another statistic out by ABI Research, which now says that, by 2015, some 1.2 billion apps will be downloaded (Overall, not just Apple). We are not quite sure where that number exactly comes from, especially since ABI quotes the most recent number of more than 200,000 available iPhone apps and we also know that Apple said earlier this year that more than 3 billion apps have been downloaded within 18 months of the launch of the AppStore.</p>
<p>ABI believes that competition will play a role in available apps and app sales and therefore says that downloads will peak sometime during 2012 and 2013. The market research firm noted that there are many apps that do not provide much value. Neil Strother, practice director at ABI, explained: “When considering the value of mobile apps as marketing tools, planners need to take a step back from all the hoopla and ask themselves, ‘How will those work for my brand? Is it right for me? What is my audience doing? Do I even have a large mobile audience? If so, how do I craft an effective strategy?’”</p>
<p>So yes, while we have a tough time finding a way to back up ABI’s numbers, we do agree that app strategy absolutely matters if you are trying to come up with a successful app. </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2010/06/21/iphone-4-could-propel-apple-to-100-million-users/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating a document centric iPhone/iPad application with own file format using ZipArchive</title>
		<link>http://icodeblog.com/2010/04/12/creating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive/</link>
		<comments>http://icodeblog.com/2010/04/12/creating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 13:00:48 +0000</pubDate>
		<dc:creator>Marin Todorov</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[file format]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[NSFileManager]]></category>
		<category><![CDATA[ZipArchive]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=1941</guid>
		<description><![CDATA[<a href="/2010/04/12/creating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2010/04/zip_thumb-150x150.jpg" class="alignleft tfe wp-post-image" alt="zip_thumb" title="zip_thumb" /></a>If I need to predict one thing about where the App Store is heading to, now that the iPad has been released, I would say “It’s going to be less about farting apps and much more about productivity apps” Yes - the iPad has already changed the game drastically - with an almost real life size keyboard, large beautiful screen and file sharing direct in iTunes you can achieve much more than before. But hey, iPhone OS 4.0 is just around the corner, and I bet one of those new features will be the same file sharing you get on the iPad.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2010%2F04%2F12%2Fcreating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2010%2F04%2F12%2Fcreating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive%2F&amp;source=elctech&amp;style=normal&amp;hashtags=custom,file+format,how+to,ipad,iphone,NSFileManager,ZipArchive" height="61" width="50" /><br />
			</a>
		</div>
<p>If I need to predict one thing about where the App Store is heading to, now that the iPad has been released, I would say “It’s going to be less about farting apps and much more about productivity apps” Yes &#8211; the iPad has already changed the game drastically &#8211; with an almost real life size keyboard, large beautiful screen and file sharing direct in iTunes you can achieve much more than before. But hey, iPhone OS 4.0 is just around the corner, and I bet one of those new features will be the same file sharing you get on the iPad.</p>
<h3>The problem</h3>
<p>Assuming you are already familiar with Objective-C and Cocoa Touch, today I’ll be discussing how to create a productivity application which can read and write multimedia files &#8211; custom format files which will be a mixture of image and text data. If you look at the most of the Apple’s productivity applications you’ll notice they all use bundles as their output format. For those not familiar with the concept &#8211; the bundle is an actual file directory, which then holds different files, but to the user it’s presented as a single file &#8211; easier to copy around and in general to work with. I am going to be doing the same today by making my example application create different text and image files and then zip them together in a single file &#8211; this way the user could then copy this single file over trough iTunes via the file sharing feature.</p>
<h3>ZipArchive overview</h3>
<p>The star of today’s article is ZipArchive &#8211; the Objective-C library I’m going to use for compressing and uncompressing my custom zip files. It is completely free and you can download it from : <a title="ZipArchive download" href="http://code.google.com/p/ziparchive/" target="_blank">http://code.google.com/p/ziparchive/</a></p>
<p>To use ZipArchive I download the library and add it to my Xcode project.</p>
<p><a href="/wp-content/uploads/2010/04/zipFilelist.png"><img class="alignnone size-full wp-image-1945" src="/wp-content/uploads/2010/04/zipFilelist.png" alt="" width="248" height="221" /></a></p>
<p>Now that I added the ZipArchive sources I am almost ready to create and extract zip archives. In fact ZipArchive uses the libz framework, so I need to add this framework to my XCode project too. Add-&gt;Existing Frameworks and I choose “libz.1.2.3.dylib”</p>
<p><a href="/wp-content/uploads/2010/04/addZlyb.jpeg"><img class="alignnone size-medium wp-image-1942" src="/wp-content/uploads/2010/04/addZlyb-300x250.jpg" alt="" width="300" height="250" /></a></p>
<p>ZipArchive is very straightforward to use, also because it offers just a handful of methods, let’s have a look together at what’s inside:</p>
<p>Creating a ZipArchive instance is super simple.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #6e371a;">#import “ZipArchive.h”</span>
&nbsp;
ZipArchive<span style="color: #002200;">*</span> zip <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>ZipArchive alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;</pre></div></div>

<h3>Create zip archives</h3>
<p>Call CreateZipFile2: to create an empty zip archive file, or call CreateZipFile:Password: to create an empty zip archive which is password protected (the latter makes creating encrypted files really easy). <strong>NB:</strong> <em>If your application is creating password protected zip files in general it uses encryption, so you would need to tick the encryption checkbox when you submit it to the App Store.</em></p>
<p>Once you create a zip archive you can add as many files as you like by calling addFileToZip:newname: and when you are done call CloseZipFile2. Or as they say “a line of code is worth thousand words”:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">ZipArchive <span style="color: #002200;">*</span>zip <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>ZipArchive alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip CreateZipFile2<span style="color: #002200;">:</span>@”archive.zip”<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip addFileToZip<span style="color: #002200;">:</span>@”photo1.png” newname<span style="color: #002200;">:</span> @”photo1.png”<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip addFileToZip<span style="color: #002200;">:</span>@”photo2.png” newname<span style="color: #002200;">:</span> @”photo2.png”<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip addFileToZip<span style="color: #002200;">:</span>@”..<span style="color: #002200;">/</span>..<span style="color: #002200;">/</span>test<span style="color: #002200;">/</span>IMG_0001.png” newname<span style="color: #002200;">:</span> @”photo3.png”<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip CloseZipFile2<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Now I really don’t think creating a zip archive gets any simpler than that. All of those methods return a boolean result, which you can check to see if the operation was successful, so you can implement also your error handling code along. To create a password protected file call:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>zip CreateZipFile2<span style="color: #002200;">:</span>@”archive.zip” Password<span style="color: #002200;">:</span> @”plaintextpassword”<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>(<em>I should really admit that ZipArchive’s the naming convention is strange: some names are CamelCase: , some camelCase:, some camel:Case: , some camelCase:case:, and sometimes a capital in the middle of the word “overWrite” &#8211; and this is a class with only 8 methods :</em>)</p>
<h3>Extracting zip archives</h3>
<p>Extracting files from a zip archive is as simple as creating one. You open an archive using UnzipOpenFile: or UnzipOpenFile:Password: Now pay attention to the result of that operation- if the file exists, but UnzipOpenFile: returns NO, it might mean the archive is password protected. If the archive file has been successfully opened it means ZipArchive can read the contents and you can proceed to extracting the files to a destination of your choice by using UnzipFileTo:overWrite: If you pass YES as the second argument, the extracting operation will overwrite files at the target location.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">ZipArchive <span style="color: #002200;">*</span>zip <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>ZipArchive alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span> <span style="color: #002200;">&#91;</span>zip UnzipOpenFile<span style="color: #002200;">:</span>@”archive.zip”<span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #002200;">&#91;</span>zip UnzipFileTo<span style="color: #002200;">:</span>@”tempFolder” overWrite<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#91;</span>zip UnzipCloseFile<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>To gain a bit more control over what ZipArchive does you can set a class of yours as a delegate, here is the ZipArchiveDelegate protocol:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@protocol</span> ZipArchiveDelegate <span style="color: #002200;">&amp;</span>lt;NSObject<span style="color: #002200;">&amp;</span>gt;
&nbsp;
@optional
&nbsp;
<span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> ErrorMessage<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> msg;
&nbsp;
<span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span> OverWriteOperation<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span> file;
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<div>So as the method names suggest if you want to get more information about the errors happening let your delegate implement ErrorMessage: and if you want to be more flexible which files gets overwritten during archive extraction implement OverWriteOperation: (return YES to overwrite the given file)</div>
<p>Now that you know everything there is to know about ZipArchive, I can start with my super duper productivity application …</p>
<h3>Creating simple custom file format with ZipArchive</h3>
<p>I’ll first create a class called CustomFile, which will be my data model &#8211; it will be responsible for reading and writing data to the file system. I’ll need few ivars and properties for them:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> filePath;
&nbsp;
<span style="color: #11740a; font-style: italic;">//the file contents</span>
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> title;
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> text;
&nbsp;
UIImage<span style="color: #002200;">*</span> photo;</pre></div></div>

<p>In filePath I’ll keep the absolute path to the location the file will be written to or red from. The rest of the ivars will be my file contents &#8211; 2 texts and 1 image. Now let me explain what this custom file format will be about &#8211; I will want to store in my files short articles &#8211; much similar to blog posts &#8211; my files will hold the title, the full text and a photo (if attached) of an article.</p>
<p>Some of you will ask <strong>why</strong> do I need a custom format for my files … can’t I just save a text file with the text and the image somewhere on my disk and then save their names in a sqlite database and done ? Nope, think trends, think iPad / iPhone 4.0 and think file sharing: as I said things are moving beyond apps which sole purpose is to amuse their users for about 5 to 10 minutes. If my app saves separate files of text and images, when the user wants to copy them from his iPad to his wife’s iPad he might miss one of those files and that will ruin the integrity of his document… So let’s look further what I have in mind:</p>
<h3>My model’s initializer:</h3>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>initWithFilePath<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>initPath
&nbsp;
<span style="color: #002200;">&#123;</span>
&nbsp;
self <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>super init<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//set the file path</span>
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>initPath <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
self.filePath <span style="color: #002200;">=</span> initPath;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">return</span> self;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Nothing special, just making sure every instance of the model is related to a file path. So since all the file contents are also class properties, I can use them to  fill in my file’s instance with content and then I will need a save method to save to the file system. And what I’d need is create a temp folder, save all my data as files there, and them zip’em! If you have a look in the code below, now that you know how to use ZipArchive the code is actually very straightforward:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>saveFile
&nbsp;
<span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//create a temp directory</span>
&nbsp;
<span style="color: #400080;">NSFileManager</span><span style="color: #002200;">*</span> fileManager <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSFileManager</span> defaultManager<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> documentsDir <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>filePath stringByDeletingLastPathComponent<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>tmpPath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>documentsDir stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;tmp&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager createDirectoryAtPath<span style="color: #002200;">:</span>tmpPath attributes<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
&nbsp;
ZipArchive <span style="color: #002200;">*</span>zip <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>ZipArchive alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip CreateZipFile2<span style="color: #002200;">:</span>self.filePath<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">//save the texts</span>
&nbsp;
<span style="color: #400080;">NSDictionary</span><span style="color: #002200;">*</span> texts <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSDictionary</span> dictionaryWithObjectsAndKeys<span style="color: #002200;">:</span>self.title,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;title&quot;</span>,self.text,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;text&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> textsFile <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>tmpPath stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;texts.plist&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">//save the image and add them to the zip file</span>
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self.photo<span style="color: #002200;">!=</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> photoFile <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>tmpPath stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;photo0.png&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSData</span> <span style="color: #002200;">*</span>imageData <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSData</span> dataWithData<span style="color: #002200;">:</span>UIImagePNGRepresentation<span style="color: #002200;">&#40;</span>self.photo<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>imageData writeToFile<span style="color: #002200;">:</span>photoFile atomically<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip addFileToZip<span style="color: #002200;">:</span>photoFile newname<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;photo0.png&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager removeItemAtPath<span style="color: #002200;">:</span>photoFile error<span style="color: #002200;">:</span><span style="color: #a61390;">NULL</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#91;</span>texts writeToFile<span style="color: #002200;">:</span>textsFile atomically<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip addFileToZip<span style="color: #002200;">:</span>textsFile newname<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;texts.plist&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager removeItemAtPath<span style="color: #002200;">:</span>textsFile error<span style="color: #002200;">:</span><span style="color: #a61390;">NULL</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> <span style="color: #002200;">!</span><span style="color: #002200;">&#91;</span>zip CloseZipFile2<span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#41;</span>
&nbsp;
<span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// error handler here</span>
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager removeItemAtPath<span style="color: #002200;">:</span>tmpPath error<span style="color: #002200;">:</span><span style="color: #a61390;">NULL</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip release<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>I am just putting the texts in a NSDictionary and saving it as a plist file, and then saving the image as a separate PNG file.  Then I zip everything and remove all traces. Note how I create my temporary folder in the same location where the file is going to be saved (assuming it is indeed writable) Your own document centric application is probably much greater than putting together some texts and an image, but I’m sure this example already gives you the right direction.</p>
<p>Now that I have already my saving method, it’s very easy to put together also the one that reads the data from the file system.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>loadFile
&nbsp;
<span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//create a temp directory</span>
&nbsp;
<span style="color: #400080;">NSFileManager</span><span style="color: #002200;">*</span> fileManager <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSFileManager</span> defaultManager<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> documentsDir <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>filePath stringByDeletingLastPathComponent<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>tmpPath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>documentsDir stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;tmp&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager createDirectoryAtPath<span style="color: #002200;">:</span>tmpPath attributes<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
&nbsp;
ZipArchive <span style="color: #002200;">*</span>zip <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>ZipArchive alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">BOOL</span> result <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;
&nbsp;
<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>zip UnzipOpenFile<span style="color: #002200;">:</span>filePath<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//zip file is there</span>
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>zip UnzipFileTo<span style="color: #002200;">:</span>tmpPath overWrite<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//unzipped successfully</span>
&nbsp;
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Archive unzip Success&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
result<span style="color: #002200;">=</span> <span style="color: #a61390;">YES</span>;
&nbsp;
<span style="color: #002200;">&#125;</span> <span style="color: #a61390;">else</span> <span style="color: #002200;">&#123;</span>
&nbsp;
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Failure To Extract Archive, maybe password?&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#125;</span> <span style="color: #a61390;">else</span>  <span style="color: #002200;">&#123;</span>
&nbsp;
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Failure To Open Archive&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>To load the file contents I have very similar approach: I get the directory of the file and create a temp folder in the same place and then I unzip it inside. Spoiler alert: All my documents are going to be saved in the Documents folder which is always writable, so no worries whether this little temp folder of mine can be crated or not. I chose for the Documents folder as this is the folder which you application can share with your computer via iTunes (in OS 3.2+)</p>
<p>Then onwards is also very simple, now the contents are extracted just load them back into the class instance:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>result<span style="color: #002200;">==</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> textFile <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>tmpPath stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;texts.plist&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSDictionary</span><span style="color: #002200;">*</span> texts <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSDictionary</span> dictionaryWithContentsOfFile<span style="color: #002200;">:</span>textFile<span style="color: #002200;">&#93;</span>;
&nbsp;
self.title <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span>texts objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;title&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
self.text  <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#91;</span>texts objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;text&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> tmpPhotoPath <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>tmpPath stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;photo0.png&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span> <span style="color: #002200;">&#91;</span>fileManager fileExistsAtPath<span style="color: #002200;">:</span>tmpPhotoPath<span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
&nbsp;
self.photo <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIImage imageWithData<span style="color: #002200;">:</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSData</span> dataWithContentsOfFile<span style="color: #002200;">:</span>tmpPhotoPath<span style="color: #002200;">&#93;</span> <span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">//do cleanup</span>
&nbsp;
<span style="color: #002200;">&#91;</span>fileManager removeItemAtPath<span style="color: #002200;">:</span>tmpPath error<span style="color: #002200;">:</span><span style="color: #a61390;">NULL</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #002200;">&#91;</span>zip release<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #a61390;">return</span> result;
&nbsp;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Now that I have my model working (a simple class to read and write my custom file format) I’ll create also the GUI of my example application &#8211; I assume you are already familiar with creating UITableControllers and binding GUI elements to your classes so I won’t go into details about those. I’ll just quickly make a resume of the app’s idea and let you dig into the source code, which is available for download at the end of the article.</p>
<p>I’ll create my main view controller to load the names of all files in my Documents directory which have extension “.mtt” &#8211; those are the files my application create and show them in a table:</p>
<p><a href="/wp-content/uploads/2010/04/DocumentsList.png"><img class="alignnone size-medium wp-image-1949" src="/wp-content/uploads/2010/04/DocumentsList-170x300.png" alt="" width="170" height="300" /></a></p>
<p>My second view controller will be the application work area &#8211; a screen where you can load an image from your photo gallery and enter some texts (again if you are not familiar with the techniques to do all these, read a more introductiory article about iPhone programming)</p>
<p><a href="/wp-content/uploads/2010/04/EditorScreen.png"><img class="alignnone size-medium wp-image-1950" src="/wp-content/uploads/2010/04/EditorScreen-166x300.png" alt="" width="166" height="300" /></a></p>
<p>So the idea of the demo app is simple, initially shows you a list of the available documents, if you click on one of them, the CustomFile class unarchives it and loads its contents into the second view controller, there you can change the contents and hit Save Document. If you want to create  a new document you just choose the “New Document …” item from the list and this will just load the details view controller empty, so you can edit and save. Just download the source and run the app to get a feeling of the app and make sure to check the source to see how ZipArchive is being used.</p>
<h3>Wrap up</h3>
<p>I hope this article has been useful &#8211; I showcased ZipArchive and also did put some ideas together on how to create more elaborate document centric applications. The custom file format can be developed a lot further and the interface for editing multimedia contents could be improved dramatically on the iPad’s big screen.</p>
<p>The full source code of the demo application you can <a href="/wp-content/uploads/2010/04/iPhoneCustomFileFormat.zip">download here</a>.</p>
<p>If you have comments or questions, please write in the comments below or <a title="Icanzil on Twitter" href="http://www.twitter.com/icanzilb">ping me in twitter</a>!</p>
<p>I wish you happy iCoding !</p>
<p>Marin Todorov </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2010/04/12/creating-a-document-centric-iphoneipad-application-with-own-file-format-using-ziparchive/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>iPhone In Action Book &#8211; Free Chapter Downloads</title>
		<link>http://icodeblog.com/2009/11/11/iphone-in-action-book-free-chapter-downloads/</link>
		<comments>http://icodeblog.com/2009/11/11/iphone-in-action-book-free-chapter-downloads/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:28:25 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone books]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=1480</guid>
		<description><![CDATA[<a href="/2009/11/11/iphone-in-action-book-free-chapter-downloads/"><img align="left" hspace="5" width="150" src="http://brandontreb.com/wp-content/uploads/2009/11/Trebitowski-iPhone-2E-1-1.png" class="alignleft wp-post-image tfe" alt="Trebitowski-iPhone-2E-1-1" title="Trebitowski-iPhone-2E-1-1" /></a><a href="http://manning.com/">Manning Publishing</a> has started their MEAP (Manning Early Access Program) for the book I am working on.  What this means for you is FREE DOWNLOADS.  There is currently only one chapter available, but there will be more as the book progresses.

The chapter currently available is about audio recording and playback.  It goes into detail about the AVAudio frameworks as well as the MPMediaPlayer.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F11%2F11%2Fiphone-in-action-book-free-chapter-downloads%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F11%2F11%2Fiphone-in-action-book-free-chapter-downloads%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iphone,iphone+books" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_559" class="wp-caption aligncenter" style="width: 460px"><a href="http://manning.com/trebitowski/"><img class="size-full wp-image-559 " title="Trebitowski-iPhone-2E-1-1" src="http://brandontreb.com/wp-content/uploads/2009/11/Trebitowski-iPhone-2E-1-1.png" alt="Trebitowski-iPhone-2E-1-1" width="450" height="564" /></a><p class="wp-caption-text">iPhone In Action 2nd Edition</p></div>
<p><a href="http://manning.com/">Manning Publishing</a> has started their MEAP (Manning Early Access Program) for the book I am working on.  What this means for you is <a href="http://manning.com/trebitowski/">FREE DOWNLOADS</a>.  There is currently only one chapter available, but there will be more as the book progresses.</p>
<p>The chapter currently available is about audio recording and playback.  It goes into detail about the AVAudio frameworks as well as the MPMediaPlayer.</p>
<p>So be sure to <a href="http://manning.com/trebitowski/">check it out</a> and feedback on the chapter is GREATLY appreciated.</p>
<p><a href="http://manning.com/trebitowski/">Link to MEAP</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/11/11/iphone-in-action-book-free-chapter-downloads/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Floodgates opened for iPhone development</title>
		<link>http://icodeblog.com/2009/10/12/floodgates-opened-for-iphone-development/</link>
		<comments>http://icodeblog.com/2009/10/12/floodgates-opened-for-iphone-development/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 18:56:30 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=1418</guid>
		<description><![CDATA[<a href="/2009/10/12/floodgates-opened-for-iphone-development/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>For as active as iPhone application development community is, achieving success in iTunes has been an elusive affair for those who participate in this vertical.  The two main obstacles presented to anyone who wants to create an iPhone applications are: one, finding resources/developers with the right skill set; and two, marketing the application after the application has been submitted.  The bad news is Apple keeps iTunes a black box.  Unless your application has been reviewed or mentioned on review sites or blogs, no one will be able to find your application outside of iTunes.  This makes marketing your application relatively difficult.  Here's the good news: the cost to build an iPhone application should come down substantially as it no longer requires a developer with an exclusive knowledge to a specific technology to build an application for iPhone.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F10%2F12%2Ffloodgates-opened-for-iphone-development%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F10%2F12%2Ffloodgates-opened-for-iphone-development%2F&amp;source=elctech&amp;style=normal&amp;hashtags=%23iphonedev" height="61" width="50" /><br />
			</a>
		</div>
<p>For as active as iPhone application development community is, achieving success in iTunes has been an elusive affair for those who participate in this vertical.  The two main obstacles presented to anyone who wants to create an iPhone applications are: one, finding resources/developers with the right skill set; and two, marketing the application after the application has been submitted.  The bad news is Apple keeps iTunes a black box.  Unless your application has been reviewed or mentioned on review sites or blogs, no one will be able to find your application outside of iTunes.  This makes marketing your application relatively difficult.  Here&#8217;s the good news: the cost to build an iPhone application should come down substantially as it no longer requires a developer with an exclusive knowledge to a specific technology to build an application for iPhone.</p>
<p>When Apple first announced to openly accept applications from developers, the prerequisite for the developer is a somewhat extensive knowledge in a language called &#8220;Objective-C.&#8221;  For a short while, it would seem as though the developers who could produce Objective-C codes were superstars that also came with a superstar price tag.  Such stardom, however, did not last.  When <a href="http://phonegap.com">PhoneGap</a> was introduced as an open source development tool for iPhone via JavaScript, the web development community devoured it like salmon to a hungry bear.  Shortly after PhoneGap&#8217;s success, <a href="http://www.mono-project.com">Mono framework</a> was released in the commercial sector that provided the necessary development tools to the vast number of C# developers across multiple platforms.  And to unhinge the final bar from the floodgates, Adobe has <a href="http://www.informationweek.com/news/internet/webdev/showArticle.jhtml?articleID=220301118">just announced</a> that the next release of Flash is capable of compiling a flash project directly into native iPhone application.  Simply put, a project can go from design to finish without even being touched by a developer.</p>
<p>The implication for this phenomenon is a curious one: how will Apple respond to the rush of new applications when the floodgates are finally open?  Will Apple still be able to keep its manual review process intact?  When the market is saturated with developers and applications, will Apple be able to to maintain iTunes exclusive distribution channel and continue to motivate merchants to participate?</p>
<p>How all of this will affect Apple or iPhone developers is yet to be seen.  However, one thing that seems to be true is that when given enough demands, people will find ways to liberate a technology regardless of how businesses are structured around it. </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/10/12/floodgates-opened-for-iphone-development/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Objective-C Tutorial: NSArray</title>
		<link>http://icodeblog.com/2009/08/26/objective-c-tutorial-nsarray/</link>
		<comments>http://icodeblog.com/2009/08/26/objective-c-tutorial-nsarray/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 19:04:46 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iPhone Programming Tutorials]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iPhone Coding]]></category>
		<category><![CDATA[iphone dev]]></category>
		<category><![CDATA[nsarray]]></category>
		<category><![CDATA[NSMutableArray]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=1268</guid>
		<description><![CDATA[<a href="/2009/08/26/objective-c-tutorial-nsarray/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>The NSArray is a huge workhorse that we use quite frequently without even thinking about it.  The NSArray class isn't just your ordinary array.  Not only does it provide random access, but it also dynamically re-sizes when you add new objects to it.  While I won't go over every method in NSArray (there are quite a few), I will discuss some of the more important ones that are most commonly used.  Let's take a closer look at this class.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F08%2F26%2Fobjective-c-tutorial-nsarray%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F08%2F26%2Fobjective-c-tutorial-nsarray%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iPhone+Coding,iphone+dev,nsarray,NSMutableArray" height="61" width="50" /><br />
			</a>
		</div>
<p>Here at iCodeblog, we have been showing you guys how to create many different types of applications from the ground up.  Well, today I decided to do something different and get down to some of the nitty gritty of a structure we rely heavily on in objective-C.</p>
<p>The NSArray is a huge workhorse that we use quite frequently without even thinking about it.  The NSArray class isn&#8217;t just your ordinary array.  Not only does it provide random access, but it also dynamically re-sizes when you add new objects to it and has many methods to make our lives easier.  While I won&#8217;t go over every method in NSArray (there are quite a few), I will discuss some of the more important ones that are most commonly used.  Let&#8217;s take a closer look at this class.</p>
<h2>Factory Methods</h2>
<p>Factory methods are <a href="http://en.wikipedia.org/wiki/Static_method#Static_methods">static methods</a> that build new instances of NSArrays from given parameters and return them.  The table below details on all of the factory methods for the NSArray class.</p>
<table style="border: 1px solid #000000; width: 100%;" border="0">
<tbody>
<tr>
<td><strong>+ (id)array</strong></td>
<td>Creates and returns an empty array</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithArray:(NSArray *)anArray</strong></td>
<td>Creates and returns an array containing the objects in another given array.</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithContentsOfFile:(NSString *)aPath</strong></td>
<td>Creates and returns an array containing the contents of the file specified by a given path. <span style="color: red;">*</span> The file must be of type .plist for this method to work</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithContentsOfURL:(NSURL *)aURL</strong></td>
<td>Similar to arrayWithContentsOfFile except it will load the .plist remotely from a given website.  This would be a very simple way to get data from a web service.</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithObject:(id)anObject</strong></td>
<td>Creates and returns an array containing a given object.  This will just be a 1 element array</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithObjects:(id)firstObj, &#8230;</strong></td>
<td>This method is used when you have multiple objects on hand and want easily insert them into an array.  Make sure the last element you add is nil or this method won&#8217;t work.</td>
</tr>
<tr>
<td><strong>+ (id)arrayWithObjects:(const id *)objects count:(NSUInteger)count</strong></td>
<td>Creates and returns an array that includes a given number of objects from a given C array.</td>
</tr>
</tbody>
</table>
<p>Here is some example usage of building NSArrays with these factory methods&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// I am using strings, but you can add just about any object to an NSArray</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Creates an NSArray with one object</span>
<span style="color: #400080;">NSArray</span>  <span style="color: #002200;">*</span> myArray <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithObject<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;foo&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Creates an NSArray with multiple objects. Don't forget to add nil as the last object</span>
<span style="color: #400080;">NSArray</span>  <span style="color: #002200;">*</span> myArray2 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithObjects<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;foo&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bar&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;baz&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Creates an NSArray from another NSArray</span>
<span style="color: #400080;">NSArray</span> <span style="color: #002200;">*</span> myArray3 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithArray<span style="color: #002200;">:</span>myArray2<span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// This will create an NSArray from data on iCodeBlog.  Go ahead and try it out, this file exists on our servers and contains valid data.</span>
<span style="color: #400080;">NSArray</span> <span style="color: #002200;">*</span> myArray4 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithContentsOfURL<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSURL</span> URLWithString<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;http://icodeblog.com/wp-content/uploads/2009/08/foo.plist&quot;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>You can also choose not to use factory methods and just use the normal NSArray initializers.  They are pretty much the same as the factory methods only you do the allocation yourself. An example of this might be:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSArray</span> <span style="color: #002200;">*</span> foo <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> alloc<span style="color: #002200;">&#93;</span> initWithObjects<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;foo&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bar&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;baz&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<h2>Accessing The NSArray</h2>
<p>Apple has provided us with many great methods for getting data out of an NSArray as well as information about it.  Here is a table of methods and their descriptions.</p>
<table style="border: 1px solid #000000; width: 100%;" border="0">
<tbody>
<tr>
<td>- (BOOL)containsObject:(id)anObject</td>
<td>Returns true if a given object is found in the array, false otherwise</td>
</tr>
<tr>
<td>- (NSUInteger)count</td>
<td>Returns the size of the array</td>
</tr>
<tr>
<td>- (id)lastObject</td>
<td>Returns the last object in the array (the one with the highest index)</td>
</tr>
<tr>
<td>- (id)objectAtIndex:(NSUInteger)index</td>
<td>Gives you random access to the array. Returns the object at a given index.</td>
</tr>
</tbody>
</table>
<p>These are just a few of the accessor methods of NSArray and most likely the only ones you will need to use.</p>
<h2>Searching The Array</h2>
<p>If you are looking for the index of an object in an array, there is really only one method you need to use.  That method is indexOfObject: . An example of usage might be:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span> f <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;foo&quot;</span>;
<span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span> b <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bar&quot;</span>;
<span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span> z <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;baz&quot;</span>;
<span style="color: #400080;">NSArray</span>  <span style="color: #002200;">*</span> myArray2 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithObjects<span style="color: #002200;">:</span>f,b,z,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
NSInteger idx <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>myArray2 indexOfObject<span style="color: #002200;">:</span>b<span style="color: #002200;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// This would return 1 (since NSArrays are 0 - indexed)</span></pre></div></div>

<p>This is much cleaner code than looping over the entire array to find an object. It&#8217;s probably more efficient too as Apple is pretty clean in how they code things.</p>
<h2>Sending Message To Objects In The Array</h2>
<p>Ok, so this is pretty cool.  Say you have an array of objects that all need to do something.  For example, an array of bullets, and you want all of the bullets to move forward one pixel. Rather than looping over each bullet object in the bullets array and calling [bullet move], you can do it in one method call on the array.  This method is called &#8211; (void)makeObjectsPerformSelector:(SEL)aSelector and here is an example of usage.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">// Lets pretend the bullet object has a method called move</span>
<span style="color: #11740a; font-style: italic;">// and there is an array of 50 bullets</span>
&nbsp;
<span style="color: #002200;">&#91;</span>bullets makeObjectsPerformSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>move<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>And that&#8217;s it&#8230; The move method will now be called on every bullet object in the array with this one method call.  Very clean and easy to use.  Now, if the method you want to call takes an argument, there is the &#8211; (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject method.  This will allow you to pass an object to each method being called.</p>
<h2>Sorting Arrays</h2>
<p>Apple has provided us with some very slick ways to sort an NSArray.  I will not go into too much detail here as I have a full tutorial planned dedicated to sorting arrays.  For now, I will just show you how to sort an NSArray of NSStrings.  The method we will be using is sortedArrayUsingSelector.  Here is the example usage.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSArray</span> <span style="color: #002200;">*</span>sortedArray <span style="color: #002200;">=</span>
    <span style="color: #002200;">&#91;</span>myArray2 sortedArrayUsingSelector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>caseInsensitiveCompare<span style="color: #002200;">:</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #11740a; font-style: italic;">// This will return a sorted array that looks like [@&quot;bar&quot;,@&quot;baz&quot;,@&quot;foo&quot;]</span></pre></div></div>

<p>You can plug in any of the string compare functions there to compare the strings.  If you are sorting an NSArray of custom objects (like users), you can overwrite the compare method for that object and pass compare in for the selector.  Just make sure you remember the : at the end of the method.</p>
<h2>Looping Through Arrays</h2>
<p>So if you are reading this, I assume you have seen a for loop before.  ex: for(int x=0; x &lt; &#8230; This would most likely not be a good way to enumerate an NSArray as Apple has provided a much nice way for doing so.  There are some situations where this method would be preferred (like when u need to calculate the indices or something).  But in most cases, you will want to use the special for loop provided by Apple. If you have ever coded PHP, it is much like the foreach loop.  Here is an example:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">for</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span> myStr <span style="color: #a61390;">in</span> myArray2<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
    NSLog<span style="color: #002200;">&#40;</span>myStr<span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>This will loop over myArray2 and pring each element in that array.  Very clean and efficient.</p>
<h2>Saving Arrays For Later</h2>
<p>There is an Array of ways to save data on the iPhone (Pun intended).  One way is to simply dump the array to a file.  This will write out the NSArray to a plist file on disk that can be loaded later using the arrayWithContentsOfFile method of NSArray.  That method is rightfully named writeToFile.  The example usage for it is as follows.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSArray</span>  <span style="color: #002200;">*</span> myArray2 <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSArray</span> arrayWithObjects<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;foo&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bar&quot;</span>,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;baz&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>myArray2 writeToFile<span style="color: #002200;">:</span>filePath atomically<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>And there you have it! You are probably wondering what the atomically variable means. Me too&#8230; Just kidding.  If YES, the file will be written to a temp location and then renamed to its final destination.  This is put in place to guarantee that the file won&#8217;t be corrupted even if the system crashes (rename will be much faster than write).  Why is this needed you ask?  Consider this scenario.</p>
<blockquote><p>You want to write a huge array to disk to save it for later.  When your app starts it checks the disk to see if this file exists, if it does it loads an NSArray from it.  If it doesn&#8217;t it creates a new NSArray.  Say the last time the app ran, the system crashed while the file was being written.  If atomically was set to NO, the original file would be corrupt and now the application would be loading corrupt data every time it starts from now on (most likely causing a crash).  However, if you set atomically to YES, the temp file would get corrupted and the app would never see it.  That way, the next time the app starts it will create a new fresh NSArray and all will be good.</p></blockquote>
<p>Good rule of thumb, set atomically to YES.</p>
<p>That concludes our tutorial on NSArray.  If you have any questions or comments, feel free to post them in the comments section or <a href="http://twitter.com/brandontreb">write me on twitter.</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/08/26/objective-c-tutorial-nsarray/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Voices That Matter iPhone Conference &#124; Special iCodeBlog Reader Discount</title>
		<link>http://icodeblog.com/2009/07/22/voices-that-matter-iphone-conference-special-icodeblog-reader-discount/</link>
		<comments>http://icodeblog.com/2009/07/22/voices-that-matter-iphone-conference-special-icodeblog-reader-discount/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 16:35:01 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[Awesomeness]]></category>
		<category><![CDATA[iphone conference]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=1143</guid>
		<description><![CDATA[<a href="/2009/07/22/voices-that-matter-iphone-conference-special-icodeblog-reader-discount/"><img align="left" hspace="5" width="150" src="/wp-content/uploads/2009/07/150x150JoinMeiPhoneVTM.jpg" class="alignleft wp-post-image tfe" alt="150x150JoinMeiPhoneVTM" title="150x150JoinMeiPhoneVTM" /></a>Calling all iPhone Developers.  Pearson Education has hooked iCodeBlog up with a sweet discount to this year&#8217;s Voices That Matter iPhone developers conference.  The conference will take place in Boston starting October 17th.  Here is some info from them (Including [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F07%2F22%2Fvoices-that-matter-iphone-conference-special-icodeblog-reader-discount%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F07%2F22%2Fvoices-that-matter-iphone-conference-special-icodeblog-reader-discount%2F&amp;source=elctech&amp;style=normal&amp;hashtags=Awesomeness,iphone+conference" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://www.voicesthatmatter.com/iphone2009/"><img class="size-full wp-image-1144 aligncenter" title="150x150JoinMeiPhoneVTM" src="/wp-content/uploads/2009/07/150x150JoinMeiPhoneVTM.jpg" alt="150x150JoinMeiPhoneVTM" width="150" height="150" /></a></p>
<p>Calling all iPhone Developers.  Pearson Education has hooked iCodeBlog up with a sweet discount to this year&#8217;s Voices <a href="http://www.voicesthatmatter.com/iphone2009/">That Matter iPhone developers conference</a>.  The conference will take place in Boston starting October 17th.  Here is some info from them (<strong>Including a coupon code for our readers</strong>)</p>
<blockquote><p>Coming to you direct from Addison-Wesley Professional, which has published some of the leading books in the field, the <a href="http://www.voicesthatmatter.com/iphone2009/">Voices That Matter: iPhone Developers Conference</a> is taking place October 17-18 in Boston! This conference is designed for Mac developers looking for a succinct, easy way to get up to speed on the specific skills needed to build, test and distribute successful applications for the iPhone and iPod touch. <strong>Erica Sadun, author of The iPhone Developer’s Cookbook and our event’s technical chair, will lead an</strong> <a href="http://iphone2009.crowdvine.com/calendar">epic group of speakers</a> at the conference including Aaron Hillegass, Andy Ihnatko, Jon Rentzsch, Steve Kochan, Fraser Speirs, Lee Barney and lots of others. At this unique event, you will:</p>
<ul>
<li>Learn the skills needed to build, test, and distribute successful applications for the iPhone and iPod Touch</li>
<li>Choose the session topics you need to become an iPhone development master</li>
<li>Network with developers equally as passionate about this exciting platform and where its going</li>
<li>Leverage your existing skills in a new and profitable way</li>
</ul>
<p><span style="text-decoration: underline;"><strong>SPECIAL SAVINGS! </strong></span>As someone that reads this blog, you can save $100 on your conference registration by providing priority code PHBLOG when registering. <a href="http://www.voicesthatmatter.com/iphone2009/register.aspx">Register</a> <strong>before September 12th and save a total of $300</strong> as this $100 discount is combined with the early bird pricing!</p></blockquote>
<p>Just in case you were too lazy to read that copy, the coupon code is: <strong>PHBLOG</strong></p>
<p>I will be there for sure and would love to meet some of the readers in person. Hope to see you there. Happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/07/22/voices-that-matter-iphone-conference-special-icodeblog-reader-discount/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RightSignature Featured on TechCrunch</title>
		<link>http://icodeblog.com/2009/06/01/rightsignature-featured-on-techcrunch/</link>
		<comments>http://icodeblog.com/2009/06/01/rightsignature-featured-on-techcrunch/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 14:47:03 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[rightsignature]]></category>
		<category><![CDATA[techcrunch]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=897</guid>
		<description><![CDATA[<a href="/2009/06/01/rightsignature-featured-on-techcrunch/"><img align="left" hspace="5" width="150" src="/wp-content/uploads/2009/06/rightsignaturelogo.png" class="alignleft wp-post-image tfe" alt="rightsignaturelogo" title="rightsignaturelogo" /></a>WOW, one of the apps we have been working on has been featured on TechCrunch. The application is called RightSignature. It allows you to digitally sign documents from any computer and your iPhone.  It&#8217;s a great piece of software that [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F06%2F01%2Frightsignature-featured-on-techcrunch%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F06%2F01%2Frightsignature-featured-on-techcrunch%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iphone,rightsignature,techcrunch" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: left;"><a href="/wp-content/uploads/2009/06/rightsignaturelogo.png"><img class="size-full wp-image-898 aligncenter" title="rightsignaturelogo" src="/wp-content/uploads/2009/06/rightsignaturelogo.png" alt="rightsignaturelogo" width="225" height="72" /></a><br />
WOW, one of the apps we have been working on has been featured on <a href="http://www.techcrunch.com/2009/05/29/make-your-mark-rightsignature-lets-you-sign-documents-online-or-on-your-iphone/">TechCrunch</a>.  The application is called RightSignature.  It allows you to digitally sign documents from any computer and your iPhone.  It&#8217;s a great piece of software that anyone who needs documents signed should definitely try out.  If you sign up through <a href="http://www.techcrunch.com/2009/05/29/make-your-mark-rightsignature-lets-you-sign-documents-online-or-on-your-iphone/">TechCrunch&#8217;s link</a> you can get 2 months free of the premium service. Can&#8217;t beat that!</p>
<p style="text-align: left;">So be sure to check out <a href="http://rightsignature.com">RightSignature!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/06/01/rightsignature-featured-on-techcrunch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom UITableViewCell Using Interface Builder</title>
		<link>http://icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/</link>
		<comments>http://icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/#comments</comments>
		<pubDate>Mon, 25 May 2009 03:27:36 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Interface Builder]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iPhone Programming Tutorials]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[uitableview]]></category>
		<category><![CDATA[UITableViewCell]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=752</guid>
		<description><![CDATA[<a href="/2009/05/24/custom-uitableviewcell-using-interface-builder/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2009/05/picture-1-150x150.png" class="alignleft wp-post-image tfe" alt="picture-1" title="" /></a>Hey everyone, welcome to my first of many screencasts coming in the next few weeks. Today I am going to show you how to layout a UITableViewCell in Interface Builder and have a UITableView populate with those type of cells. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F05%2F24%2Fcustom-uitableviewcell-using-interface-builder%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F05%2F24%2Fcustom-uitableviewcell-using-interface-builder%2F&amp;source=elctech&amp;style=normal&amp;hashtags=uitableview,UITableViewCell" height="61" width="50" /><br />
			</a>
		</div>
<p>Hey everyone, welcome to my first of many screencasts coming in the next few weeks. Today I am going to show you how to layout a UITableViewCell in Interface Builder and have a UITableView populate with those type of cells. I am adopting a new structure for my screencasts which will be 5 or so mintues of keynote slides giving background info followed by 20 &#8211; 25 mintues of step by step development. The entire video will be directly below this paragraph, but scrolling down you will see a text based step by step of the whole tutorial as well. Hope you guys enjoy.</p>
<h2><span style="color: #000000;">Skill Level</span> <span style="color: #ff6600;">MEDIUM</span></h2>
<p>Here is a link to the screencast to watch. We are working on getting an embedded version in, but I figure this is basically just as functional. Have fun!</p>
<h2><a href="http://eu-video-cloud.s3.amazonaws.com/available/114103480/asset-61/encoded_hidef.mp4">Custom UITableViewCell Screencast Video</a></h2>
<h1><span style="color: #ff6600;">Source Code<br />
</span></h1>
<h3><a title="Custom UITableViewCell's Using Interface Builder" href="http://losectrl-gaincommand.com/iCodeBlogHelper/Tutorial1/CustomUITableViewCell.zip"><span style="text-decoration: underline;">Available Here</span></a></h3>
<h2><span style="color: #008080;">Background Information</span></h2>
<p><img class="aligncenter size-full wp-image-814" src="/wp-content/uploads/2009/05/picture-1.png" alt="picture-1" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-815" src="/wp-content/uploads/2009/05/picture-2.png" alt="picture-2" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-816" src="/wp-content/uploads/2009/05/picture-3.png" alt="picture-3" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-817" src="/wp-content/uploads/2009/05/picture-4.png" alt="picture-4" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-818" src="/wp-content/uploads/2009/05/picture-5.png" alt="picture-5" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-819" src="/wp-content/uploads/2009/05/picture-6.png" alt="picture-6" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-820" src="/wp-content/uploads/2009/05/picture-7.png" alt="picture-7" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-821" src="/wp-content/uploads/2009/05/picture-8.png" alt="picture-8" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-822" src="/wp-content/uploads/2009/05/picture-9.png" alt="picture-9" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-823" src="/wp-content/uploads/2009/05/picture-10.png" alt="picture-10" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-824" src="/wp-content/uploads/2009/05/picture-11.png" alt="picture-11" width="622" height="388" /></p>
<h2><span style="color: #008080;">Building The App</span></h2>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 1</span></span></h3>
<p><img class="aligncenter size-full wp-image-825" src="/wp-content/uploads/2009/05/picture-12.png" alt="picture-12" width="622" height="388" /></p>
<p style="padding-left: 60px;"><span style="color: #008080;"><span style="color: #993300;"><span style="color: #000000;">This step shouldn&#8217;t require any extra information.</span></span></span></p>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 2</span></span></h3>
<p><img class="aligncenter size-full wp-image-826" src="/wp-content/uploads/2009/05/picture-13.png" alt="picture-13" width="622" height="388" /></p>
<p><img class="aligncenter size-full wp-image-836" src="/wp-content/uploads/2009/05/datasourceconnection.png" alt="datasourceconnection" width="622" height="377" /></p>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 3</span></span></h3>
<p><img class="aligncenter size-full wp-image-827" src="/wp-content/uploads/2009/05/picture-14.png" alt="picture-14" width="622" height="388" /></p>
<p style="padding-left: 30px;">In CustomTableCellTutorialViewController.m you must define the two required UITableViewDataSource methods. These methods will fill up the table view with data. For now we will put in dummy data just to make sure all of our connections are working.</p>
<p style="padding-left: 30px;">- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section</p>
<p style="padding-left: 30px;">{</p>
<p style="padding-left: 60px;">return 10;</p>
<p style="padding-left: 30px;">}</p>
<p style="padding-left: 30px;">- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath</p>
<p style="padding-left: 30px;">{</p>
<p style="padding-left: 60px;">static NSString *CellIdentifier = @&#8221;Cell&#8221;;</p>
<p style="padding-left: 60px;">UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];</p>
<p style="padding-left: 60px;">if (cell == nil){</p>
<p style="padding-left: 90px;">cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];</p>
<p style="padding-left: 60px;">}</p>
<p style="padding-left: 60px;">[cell setText:[NSString stringWithFormat:@"I am cell %d", indexPath.row]];</p>
<p style="padding-left: 60px;">return cell;</p>
<p style="padding-left: 30px;">}</p>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 4</span></span></h3>
<p><img class="aligncenter size-full wp-image-828" src="/wp-content/uploads/2009/05/picture-15.png" alt="picture-15" width="622" height="388" /></p>
<p style="padding-left: 30px;">Here you will need to be in xCode and go to File -&gt; New File&#8230;</p>
<p style="padding-left: 30px;">Select Objective C Class and make sure it is a UITableViewCell subclass, depending on your version of the SDK selecting this will differ. Look around and you will find it, call it iCodeBlogCustomCell. With this done enter these IBOutlets in the iCodeBlogCustomCell.h file enter the following IBOutlets:</p>
<p style="padding-left: 30px;">IBOutlet UILabel *articleName;<br />
IBOutlet UILabel *authorName;<br />
IBOutlet UILabel *date;</p>
<p>IBOutlet UIImageView *imageView;<br />
IBOutlet UIView *viewForBackground;</p>
<p style="padding-left: 30px;">Add the @property and synthesize them in the main.</p>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 5</span></span></h3>
<p><img class="aligncenter size-full wp-image-829" src="/wp-content/uploads/2009/05/picture-16.png" alt="picture-16" width="622" height="388" /></p>
<p style="padding-left: 30px;">This step does not require and code but does require a lot of work in Interface Builder. I highly recommend you watch the screencast to see the step by step procedure here. Essentially what I do is create a new View XIB file. Opening this, I delete the standard UIView in the XIB and drag a UITableViewCell from my library into my document window. I assign the UITableViewCell to be of type iCodeBlogCustomCell. With this done layout the interface with the proper elements and hook them up by right clicking on the UITableViewCell in the document window.</p>
<h3><span style="color: #008080;"><span style="color: #993300;">Step 6<br />
</span></span></h3>
<p><img class="aligncenter size-full wp-image-830" src="/wp-content/uploads/2009/05/picture-17.png" alt="picture-17" width="622" height="388" /></p>
<p style="padding-left: 30px;">This is where the real magic is. We are going to return to CustomTableCellTutorialViewController.m and edit the UITableViewDataSource methods we implemented earlier. The code I use has me putting in 4 separate PNG files that I add to my project. You can find your own to put inside the cells. Make sure the UIImageView inside the cell is set for Aspect Fit so you don&#8217;t have to worry about resizing the images.  The functions should be changed to be:</p>
<p style="padding-left: 30px;">- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section<br />
{<br />
return 100;<br />
}</p>
<p style="padding-left: 30px;">- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath<br />
{<br />
static NSString *CellIdentifier = @&#8221;iCodeBlogCustomCell&#8221;;</p>
<p style="padding-left: 60px;">iCodeBlogCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];</p>
<p style="padding-left: 60px;">if (cell == nil){<br />
NSLog(@&#8221;New Cell Made&#8221;);</p>
<p style="padding-left: 60px;">NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@&#8221;iCodeBlogCustomCell&#8221; owner:nil options:nil];</p>
<p style="padding-left: 60px;">for(id currentObject in topLevelObjects)<br />
{<br />
if([currentObject isKindOfClass:[iCodeBlogCustomCell class]])<br />
{<br />
cell = (iCodeBlogCustomCell *)currentObject;<br />
break;<br />
}<br />
}<br />
}</p>
<p style="padding-left: 60px;">
<p style="padding-left: 60px;">if(indexPath.row % 4 == 0)<br />
{<br />
[[cell authorName] setText:@&#8221;Collin Ruffenach&#8221;];<br />
[[cell articleName] setText:@&#8221;Test Article 1&#8243;];<br />
[[cell date] setText:@&#8221;May 5th, 2009&#8243;];<br />
[[cell imageView] setImage:[UIImage imageNamed:@"1.png"]];<br />
}</p>
<p style="padding-left: 60px;">else if(indexPath.row % 4 == 1)<br />
{<br />
[[cell authorName] setText:@&#8221;Steve Jobs&#8221;];<br />
[[cell articleName] setText:@&#8221;Why iPhone will rule the world&#8221;];<br />
[[cell date] setText:@&#8221;May 5th, 2010&#8243;];<br />
[[cell imageView] setImage:[UIImage imageNamed:@"2.png"]];<br />
}</p>
<p style="padding-left: 60px;">else if(indexPath.row % 4 == 2)<br />
{<br />
[[cell authorName] setText:@&#8221;The Woz&#8221;];<br />
[[cell articleName] setText:@&#8221;Why I&#8217;m coming back to Apple&#8221;];<br />
[[cell date] setText:@&#8221;May 5th, 2012&#8243;];<br />
[[cell imageView] setImage:[UIImage imageNamed:@"3.png"]];<br />
}</p>
<p style="padding-left: 60px;">else if(indexPath.row % 4 == 3)</p>
<p style="padding-left: 60px;">{<br />
[[cell authorName] setText:@&#8221;Aaron Hillegass&#8221;];<br />
[[cell articleName] setText:@&#8221;Cocoa: A Brief Introduction&#8221;];<br />
[[cell date] setText:@&#8221;May 5th, 2004&#8243;];<br />
[[cell imageView] setImage:[UIImage imageNamed:@"4.png"]];</p>
<p style="padding-left: 60px;">}</p>
<p style="padding-left: 30px;">return cell;<br />
}</p>
<h3><span style="color: #008080;"><span style="color: #993300;">The End</span></span></h3>
<p style="padding-left: 30px;">So that is it for my first new post. I will be doing many more. Let me know your thoughts on this format in the comments. If you see anything organization wise that you think should be changed/add/removed let me know. Good Luck!</p>
<p style="padding-left: 30px;">
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/feed/</wfw:commentRss>
		<slash:comments>79</slash:comments>
		</item>
		<item>
		<title>Great Tutorial Series on OpenGL ES</title>
		<link>http://icodeblog.com/2009/05/20/great-tutorial-series-on-opengl-es/</link>
		<comments>http://icodeblog.com/2009/05/20/great-tutorial-series-on-opengl-es/#comments</comments>
		<pubDate>Wed, 20 May 2009 20:07:49 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=873</guid>
		<description><![CDATA[<a href="/2009/05/20/great-tutorial-series-on-opengl-es/"><img align="left" hspace="5" width="150" src="http://lh6.ggpht.com/_QLwms0mVa4w/SgsbyhmQyuI/AAAAAAAAATw/aOtlJuYsOY8/iPhone%20SimulatorScreenSnapz007.jpg?imgmax=800" class="alignleft wp-post-image tfe" alt="" title="OpenGL ES" /></a>Jeff Lamarche author of the book &#8220;Beginning iPhone Development&#8221; has written (and is currently writing) a brilliant series on OpenGL ES.  He does an incredibly job of simplifying the complex ideas behind working in 3D and makes learning OpenGL ES [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F05%2F20%2Fgreat-tutorial-series-on-opengl-es%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F05%2F20%2Fgreat-tutorial-series-on-opengl-es%2F&amp;source=elctech&amp;style=normal&amp;hashtags=%23iphonedev" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html"><img class="alignleft" title="OpenGL ES" src="http://lh6.ggpht.com/_QLwms0mVa4w/SgsbyhmQyuI/AAAAAAAAATw/aOtlJuYsOY8/iPhone%20SimulatorScreenSnapz007.jpg?imgmax=800" alt="" width="208" height="400" /></a>Jeff Lamarche author of the book &#8220;Beginning iPhone Development&#8221; has written (and is currently writing) a <a href="http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html">brilliant series on OpenGL ES</a>.  He does an incredibly job of simplifying the complex ideas behind working in 3D and makes learning OpenGL ES easy for even a novice programmer.</p>
<p>I have always struggled with OpenGL as 3D has a lot of nerdy math, this series breaks it down into the simplest of forms and helped me tremendously. So go check it out and let me know what you think.</p>
<p><a href="http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html">http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html</a></p>
<p>Jeff is also on Twitter<a href="http://twitter.com/jeff_lamarche">@jeff_lamarche</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/05/20/great-tutorial-series-on-opengl-es/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Great Resource For All iPhone Developers &#8211; iBetaTest.com</title>
		<link>http://icodeblog.com/2009/02/02/great-resource-for-all-iphone-developers-ibetatestcom/</link>
		<comments>http://icodeblog.com/2009/02/02/great-resource-for-all-iphone-developers-ibetatestcom/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 06:19:07 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone beta test]]></category>
		<category><![CDATA[iPhone Coding]]></category>
		<category><![CDATA[iphone developer]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=616</guid>
		<description><![CDATA[<a href="/2009/02/02/great-resource-for-all-iphone-developers-ibetatestcom/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2009/02/ss-150x150.jpg" class="alignleft wp-post-image tfe" alt="ss" title="ss" /></a>Through my travels of the internets, I have encountered a great website for iPhone developers looking to have their applications beta tested by real people.  The website is called iBetaTest.com .  Launching their site just yesterday, iBetaTest.com already boasts 135 registered [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2009%2F02%2F02%2Fgreat-resource-for-all-iphone-developers-ibetatestcom%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2009%2F02%2F02%2Fgreat-resource-for-all-iphone-developers-ibetatestcom%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iphone+beta+test,iPhone+Coding,iphone+developer" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center; "><a href="http://ibetatest.com/iphone/controllers/register/"><img class="size-full wp-image-617 aligncenter" title="ss" src="/wp-content/uploads/2009/02/ss.jpg" alt="ss" width="503" height="300" /></a></p>
<p style="text-align: left; ">Through my travels of the internets, I have encountered a great website for iPhone developers looking to have their applications beta tested by real people.  The website is called <a href="http://ibetatest.com">iBetaTest.com</a> . </p>
<p style="text-align: left; ">Launching their site just yesterday, <a href="http://ibetatest.com/iphone/controllers/register/">iBetaTest.co</a>m already boasts 135 registered testers and 44 registered developers!  Here is the skinny on how it works (per their website).</p>
<ul>
<li>Beta testers and developers <a href="http://ibetatest.com/iphone/controllers/register/">register</a> for a free account</li>
<li>Beta testers <a href="http://ibetatest.com/iphone/controllers/login/">log in</a> and go into the Device Manager and add all of their devices</li>
<li>Developers can go to Manage Betas module and create a new beta<br />
- at this point they specify beta type (public, manual, invite only, the auto approve setting, etc.)<br />
- select which devices are required to run their application (iPhone, iPhone 3G, iPod touch v1, v2, or All)<br />
- set number of desired testers (2-100)<br />
- write the application’s description<br />
- provide info on any incentives for beta tester participation<br />
- upload the application files, license file and any screenshots they want<br />
- write what needs to be tested and add any special instructions and <em>voila</em> - the app is up and running</li>
<li>At this point (if app is set public), beta testers can see it and apply for it<br />
- ONLY beta testers with devices the application supports, and with UDID’s already entered can apply for a given beta<br />
- If the application is set to auto approve &#8211; they are automatically added to the list of testers, until the limit set by the developer is reached<br />
- If it is not set to auto approve &#8211; the developer gets an email, and then either approves or denies the tester </li>
<li>During this time, no matter if the application is public or private, developer can also send invites to anyone to come and join the beta<br />
- Users not yet registered on iBetaTest.com get an email, and once they sign up, their Pending Beta Testing Invitation will be shown on the Dashboard from where they can accept or deny it<br />
- Registered members also see it on the Dashboard, and can approve or reject any invitation straight from there<br />
- NO INVITE CODES are necessary. It’s all seamless and based on user’s email address, for both registered and non registered members <img class="wpSmiley" src="http://ibetatest.com/blog/wp-content/plugins/wp-smiley-switcher/yellowpack/icon_smile.gif" alt="" /> </li>
<li>There is a convenient “Get ADC Import File” feature for developers, which lets them download a file containing beta tester’s names and UDID’s which is directly importable into Apple’s Developer’s Connection portal; no more copying and pasting <img class="wpSmiley" src="http://ibetatest.com/blog/wp-content/plugins/wp-smiley-switcher/yellowpack/icon_smile.gif" alt="" /></li>
<li>At any time developer can simply click Close For Signups button under My Betas module and close the beta signup process (which is not necessary)</li>
<li>Approved beta testers can access all features the system offers right on every application’s home page<br />
- From there they may send reports (bugs, feature requests, comments) and communicate with developer and other testers<br />
- Everyone can also download Application files, documentation, and license files straight from there</li>
<li>The system AUTOMATICALLY checks developer’s<em>.mobileprovision</em> files to see if the tester’s UDID has been provisioned in that version, and notifies a tester if he/she should be downloading any files yet.<br />
- This way, developers do not have to send the files individually to each tester. They are all available in the same pool, and as soon as the license is uploaded, beta testers know if their device can run and install it yet or not.</li>
<li>During the beta testing &#8211; developers can also email users from My Betas module at any time (one by one, or all at once) with any info they have that has to get to testers right away. If a support email address is provided in developer’s profile, these emails are shown as if they are coming from that address, however, if none is entered, they are all sent from system@ibetatest.com</li>
<li>Privacy is STRONGLY guarded on iBetaTest.com. From initial interviews with developers, before the system was even built, all they cared about was what the beta testers have to say &#8211; not, what their personal information is<br />
- The only piece of information a developer can see on their tester is the First Name (for a more professional communication), and tester’s username.<br />
- The system itself sends all information via integrated mailing system, thus enforcing the use of Reports Module for all direct communication with the developer<br />
- Each report can be set to either “for all” or “for developer only”, making it easy to talk to the developer “in private”</li>
<li>Both developers and beta testers can set their personal profiles (with addition of developers also having a developer profile), where they can publish all other info they’d like to share with the world: Short bio, and links to their Linked-In, Facebook and Twitter profiles</li>
<li>Once the beta testing has finished, the developer has a chance to rate the beta testers (1-5 star rating) and write a short note, which will become a part of Tester’s Testimonials Page (located right on their profile with all other info)</li>
<li>Rating system is an interesting one, to say the least. Each star is 10 points. THERE WILL BE REWARDS for first testers to reach 200, 500, 1000, and so on points &#8211; and these won’t be shabby either! Stay tuned for more info on this.</li>
</ul>
<p> </p>
<p style="text-align: left; ">After registering for a developer account, it was clear to me that this site is rock solid.  From the looks of it, they have coded it in <a href="http://rubyonrails.org/">Ruby on Rails</a> (great choice) which is obvious by their clean URL structure and smooth ajax effects.  At the moment, the site doesn&#8217;t currently have any active beta applications, but I am sure this will change in the near future.  I will be following this site closely (and maybe even submitting some betas for testing).  They also have a twitter which can be found here: <a href="http://twitter.com/ibetatest">http://twitter.com/ibetatest</a> if your a Twitter kind of person (you should be).</p>
<p style="text-align: left; ">So, be sure and let me know what you think of this site and share your experience in the comments or <a href="http://twitter.com/brandontreb">write me on twitter.</a> I can&#8217;t wait to launch the next tutorial in the game series (it will blow your socks off)&#8230; Unit then, happy iCoding!</p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2009/02/02/great-resource-for-all-iphone-developers-ibetatestcom/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The &#8220;Digg&#8221; of iPhone Apps &#8211; Checkout My New Site</title>
		<link>http://icodeblog.com/2008/11/15/the-digg-of-iphone-apps-checkout-my-new-site/</link>
		<comments>http://icodeblog.com/2008/11/15/the-digg-of-iphone-apps-checkout-my-new-site/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 19:00:02 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[fresh iphone apps]]></category>
		<category><![CDATA[freshapps]]></category>
		<category><![CDATA[iPhone apps]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=546</guid>
		<description><![CDATA[<a href="/2008/11/15/the-digg-of-iphone-apps-checkout-my-new-site/"><img align="left" hspace="5" width="150" src="/wp-content/uploads/2008/11/fa.png" class="alignleft wp-post-image tfe" alt="" title="iPhone Apps - Fresh Apps" /></a>It has been a while since my last tutorial.  For that I am sorry.  My wife is 9 months pregnant and about ready to pop.  This being the case, she takes up most of my free time&#8230; I have spent [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F11%2F15%2Fthe-digg-of-iphone-apps-checkout-my-new-site%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F11%2F15%2Fthe-digg-of-iphone-apps-checkout-my-new-site%2F&amp;source=elctech&amp;style=normal&amp;hashtags=fresh+iphone+apps,freshapps,iPhone+apps" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://www.freshapps.com"><img class="alignnone size-full wp-image-547" title="iPhone Apps - Fresh Apps" src="/wp-content/uploads/2008/11/fa.png" alt="" width="293" height="133" /></a></p>
<p>It has been a while since my last tutorial.  For that I am sorry.  My wife is 9 months pregnant and about ready to pop.  This being the case, she takes up most of my free time&#8230; I have spent a little of my extra time developing a new <a href="http://www.freshapps.com/">iphone apps</a> site called <a href="http://www.freshapps.com/">freshapps.com</a>.</p>
<p>The site uses WordPress as its main engine and aims to be a &#8220;Digg-like&#8221; site for <a href="http://www.freshapps.com/">iphone apps</a>. It offers a new fun way to discover the &#8220;freshest&#8221; iphone apps without having to get buried in the app store.  I wrote a pretty slick homepage algorithm that aids in doing this.  </p>
<p>Check it out and let me know what you think! I will be continuing with the iPhone programming tutorials after my baby is born.  This should be mid December.  I am sorry for the delay.  I will still be on answering questions you guys might have and try to get back into the forums.</p>
<p>Thanks for being a part of iCodeBlog. Happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/11/15/the-digg-of-iphone-apps-checkout-my-new-site/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>A Great iPhone Coding Resource</title>
		<link>http://icodeblog.com/2008/11/05/a-great-iphone-coding-resource/</link>
		<comments>http://icodeblog.com/2008/11/05/a-great-iphone-coding-resource/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 18:42:03 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iPhone apps]]></category>
		<category><![CDATA[iPhone Coding]]></category>
		<category><![CDATA[iphone development]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=544</guid>
		<description><![CDATA[<a href="/2008/11/05/a-great-iphone-coding-resource/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>I&#8217;m sure many of you are aware that Stanford is offering an iPhone development class this semester.   On my journeys through the interwebs, I discovered a link to the site where the lectures for this class were posted (via [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F11%2F05%2Fa-great-iphone-coding-resource%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F11%2F05%2Fa-great-iphone-coding-resource%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iPhone+apps,iPhone+Coding,iphone+development" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;m sure many of you are aware that <a href="http://www.tuaw.com/2008/07/23/stanford-to-offer-iphone-programming-course/">Stanford is offering an iPhone development class</a> this semester.   On my journeys through the interwebs, I discovered a link to the site where the lectures for this class were posted (via delicious).  </p>
<p>So for those of you who already didn&#8217;t know this, here is a link to the lecture slides (with sample code).</p>
<p><a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">http://www.stanford.edu/class/cs193p/cgi-bin/index.php</a></p>
<p>I hope you find the examples and instruction here very useful. Have a great day and happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/11/05/a-great-iphone-coding-resource/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>No More iPhone Developer NDA</title>
		<link>http://icodeblog.com/2008/10/01/no-more-iphone-developer-nda/</link>
		<comments>http://icodeblog.com/2008/10/01/no-more-iphone-developer-nda/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 17:02:58 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[iphone development]]></category>
		<category><![CDATA[iphone NDA]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=456</guid>
		<description><![CDATA[<a href="/2008/10/01/no-more-iphone-developer-nda/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/10/iphonenda-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="No Mas NDA!!1!" /></a>It looks like iCodeBlog is no longer illegal! Lol.  Apple has just announced that they are doing away with their &#8220;F-ing&#8221; NDA (as it has been coined).  This is great news for developers as we can now talk safely in [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F10%2F01%2Fno-more-iphone-developer-nda%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F10%2F01%2Fno-more-iphone-developer-nda%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iphone+development,iphone+NDA" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="/wp-content/uploads/2008/10/iphonenda.jpg"><img class="size-full wp-image-457 aligncenter" title="No Mas NDA!!1!" src="/wp-content/uploads/2008/10/iphonenda.jpg" alt="" width="500" height="250" /></a></p>
<p style="text-align: left;">It looks like iCodeBlog is no longer illegal! Lol.  Apple has just announced that they are doing away with their &#8220;F-ing&#8221; NDA (as it has been coined).  This is great news for developers as we can now talk safely in the open about development for the iPhone  without fear.</p>
<p style="text-align: left;">This pesky NDA has been annoying developers since the beginning of (iPhone Development) time.  Maybe now, we will start seeing some great books being published for iPhone development.</p>
<p style="text-align: left;">Source: <a href="http://www.engadget.com/2008/10/01/apple-drops-iphone-nda/">Engaget</a></p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/10/01/no-more-iphone-developer-nda/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The I&#8217;s have it! iCodeBlog Now Has A Forum (for now)</title>
		<link>http://icodeblog.com/2008/08/07/the-is-have-it-icodeblog-now-has-a-forum-for-now/</link>
		<comments>http://icodeblog.com/2008/08/07/the-is-have-it-icodeblog-now-has-a-forum-for-now/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 15:43:34 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=189</guid>
		<description><![CDATA[<a href="/2008/08/07/the-is-have-it-icodeblog-now-has-a-forum-for-now/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>OK, so 20-someodd votes for a forum has swayed me for now.  I went ahead and put up a forum on iCodeBlog.  This will be experimental as it&#8217;s such a sad site to see failing forums with a lack of [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F07%2Fthe-is-have-it-icodeblog-now-has-a-forum-for-now%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F07%2Fthe-is-have-it-icodeblog-now-has-a-forum-for-now%2F&amp;source=elctech&amp;style=normal&amp;hashtags=%23iphonedev" height="61" width="50" /><br />
			</a>
		</div>
<p>OK, so 20-someodd votes for a forum has swayed me for now.  I went ahead and put up a <a href="/forum">forum </a>on iCodeBlog.  This will be experimental as it&#8217;s such a sad site to see failing forums with a lack of participation.  With that in mind, I will set a goal:</p>
<p>If the forum has at least <strong>50 </strong>registered users by next week 08/14/08 (which shouldn&#8217;t be that hard, the site already gets over 500 unique visits per day), it stays.  If not, I will take it down.  A forum takes a lot of work to maintain and attract new users.  I am willing to put in that effort, if there is enough interest.</p>
<p>So go <a href="/forum?&amp;action=register">fourth and register</a> for the forums.</p>
<p>Happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/08/07/the-is-have-it-icodeblog-now-has-a-forum-for-now/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Forums on iCodeBlog</title>
		<link>http://icodeblog.com/2008/08/06/forums/</link>
		<comments>http://icodeblog.com/2008/08/06/forums/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 16:55:39 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=175</guid>
		<description><![CDATA[<a href="/2008/08/06/forums/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>There have been some recent talks about putting some sort of forum/discussion system on iCodeBlog.  It appears that writing problems and solutions in the comments section is not sufficient.  I&#8217;m not too sure about this as I feel this might [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F06%2Fforums%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F06%2Fforums%2F&amp;source=elctech&amp;style=normal&amp;hashtags=%23iphonedev" height="61" width="50" /><br />
			</a>
		</div>
<p>There have been some recent talks about putting some sort of forum/discussion system on iCodeBlog.  It appears that writing problems and solutions in the comments section is not sufficient.  I&#8217;m not too sure about this as I feel this might make the site a little cluttered.  However, I am completely willing to put one in place if enough people are interested and could find benefit in it.</p>
<p>With that in mind, I have created a poll.  Go ahead and fill it out and if enough people want a forum, I will put one on iCodeBlog.</p>
<p style="text-align: center;">[poll id=2]</p>
<p>Let me know what you guys think&#8230;</p>
<p>Happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/08/06/forums/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>iPhone 2.0.1 Firmware Update</title>
		<link>http://icodeblog.com/2008/08/05/iphone-201-software/</link>
		<comments>http://icodeblog.com/2008/08/05/iphone-201-software/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 14:54:57 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=170</guid>
		<description><![CDATA[<a href="/2008/08/05/iphone-201-software/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/08/iphone-2-0-1-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="iphone-2-0-1" /></a>Well, it has been about 3 weeks now since the launch of the iPhone and Apple has released the much anticipated 2.0.1 software update for the iPhone yesterday. Since downloading this 250 MB beast of firmware, I haven&#8217;t had much [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F05%2Fiphone-201-software%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F08%2F05%2Fiphone-201-software%2F&amp;source=elctech&amp;style=normal&amp;hashtags=firmware,iphone,software,update" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="/wp-content/uploads/2008/08/iphone-2-0-1.jpg"><img class="size-full wp-image-171 aligncenter" title="iphone-2-0-1" src="/wp-content/uploads/2008/08/iphone-2-0-1.jpg" alt="" width="500" height="345" /></a></p>
<p>Well, it has been about 3 weeks now since the launch of the iPhone and Apple has released the much anticipated 2.0.1 software update for the iPhone yesterday.</p>
<p>Since downloading this 250 MB beast of firmware, I haven&#8217;t had much time to play with it.  After a quick runthrough of a few programs, I have noticed an overall performance improvement.  They seemed to have fixed the lag when scrolling through contacts, which was a huge frustration for me.</p>
<p>I can&#8217;t give a full review on it yet as it is too early on, but I would really like to know what you guys think about the update.  Have you noticed any significant improvement?  Leave me a note in the comments.</p>
<p>Stay tuned for another tutorial a little later this week.  I will be showing you how to populate a UITableView from an array of objects.</p>
<p>Happy iCoding! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/08/05/iphone-201-software/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>App Store Loophole Allows Apps to be Pirated</title>
		<link>http://icodeblog.com/2008/07/28/app-store-loophole-allows-apps-to-be-pirated/</link>
		<comments>http://icodeblog.com/2008/07/28/app-store-loophole-allows-apps-to-be-pirated/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 21:26:45 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[pirate]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=56</guid>
		<description><![CDATA[<a href="/2008/07/28/app-store-loophole-allows-apps-to-be-pirated/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/07/apple-app-store-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="Apple App Store" /></a>Apparently Apple doesn&#8217;t link iPhone hardware and the username of a user downloading an app from the App Store.  What this means is, one person can pay for an app, download it, and it can be downloaded to any other [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F28%2Fapp-store-loophole-allows-apps-to-be-pirated%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F28%2Fapp-store-loophole-allows-apps-to-be-pirated%2F&amp;source=elctech&amp;style=normal&amp;hashtags=app+store,free,iphone,itunes,pirate" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="/wp-content/uploads/2008/07/apple-app-store.jpg"><img class="size-full wp-image-57 aligncenter" title="Apple App Store" src="/wp-content/uploads/2008/07/apple-app-store.jpg" alt="" width="350" height="308" /></a></p>
<p style="text-align: left;">Apparently Apple doesn&#8217;t link iPhone hardware and the username of a user downloading an app from the App Store.  What this means is, one person can pay for an app, download it, and it can be downloaded to any other phone attached to that computer.</p>
<p style="text-align: left;">Also, you can log into any computer that is authorized to use your iTunes account and all of the purchased apps will download to that machine for free.  Just another slip up on Apple&#8217;s part while trying to push out the 2.0 software before it was ready. Hmmm&#8230; I think I have seen this sort of thing somewhere&#8230;Vista anyone?</p>
<p style="text-align: left;">Source: <a title="Original Article" href="http://www.engadget.com/2008/07/28/iphone-apps-pirated-shared-but-not-gpld/" target="_blank">Engaget.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/07/28/app-store-loophole-allows-apps-to-be-pirated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Torque Game Engine for iPhone</title>
		<link>http://icodeblog.com/2008/07/25/torque-game-engine-for-iphone/</link>
		<comments>http://icodeblog.com/2008/07/25/torque-game-engine-for-iphone/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 16:22:35 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=25</guid>
		<description><![CDATA[<a href="/2008/07/25/torque-game-engine-for-iphone/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/07/torque-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="torque iphone game engine" /></a>An independent game developer known as GarageGames has recently released their tried and true game development engine for the iPhone.  They already have an engine for large platforms such as Mac, Windows, Linux, Wii, Xbox, and now they are expanding [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F25%2Ftorque-game-engine-for-iphone%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F25%2Ftorque-game-engine-for-iphone%2F&amp;source=elctech&amp;style=normal&amp;hashtags=engine,game,iPhone+Articles" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="http://www.garagegames.com/products/torque/iPhone/"><img class="aligncenter size-full wp-image-26 transparent" title="torque iphone game engine" src="/wp-content/uploads/2008/07/torque.jpg" alt="" width="500" height="360" /></a></p>
<p>An independent game developer known as <a href="http://www.garagegames.com">GarageGames</a> has recently released their tried and true game development engine for the iPhone.  They already have an engine for large platforms such as Mac, Windows, Linux, Wii, Xbox, and now they are expanding to the most up-in-coming mobile platfor ever; the iPhone.</p>
<p>&#8220;Ready to make games for the iPhone?&#8221; is the tagline on their game engine site.  They claim that &#8220;Making games for the iPhone is now a straightforward process using Torque&#8217;s proven 2D and 3D tools for game development&#8221;.</p>
<p>GarageGames also boasts that they have added iPhone specific funtionality to Torque such as</p>
<ul>
<li>Multi-touch Input Support</li>
<li>Touchscreen Gesture Recognition</li>
<li>iPhone Optimized Compressed Texture</li>
<li>Advanced Character and Shape Animations</li>
</ul>
<p>With this release, I hope to see some great (possibly free) games for the iPhone in the near future.  They didn&#8217;t release specific pricing, but they boast that it will be affordable.  So <a href="http://www.garagegames.com/products/torque/iPhone/" target="_blank">check it out</a>, and make WOW for the iPhone! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/07/25/torque-game-engine-for-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone 2.0 Software = Buggy</title>
		<link>http://icodeblog.com/2008/07/23/iphone-20-software-buggy/</link>
		<comments>http://icodeblog.com/2008/07/23/iphone-20-software-buggy/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 02:01:12 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=7</guid>
		<description><![CDATA[<a href="/2008/07/23/iphone-20-software-buggy/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/07/iphonebugs-150x150.png" class="alignleft wp-post-image tfe" alt="iphone 2.0 software bugs" title="iphonebugs" /></a>So I have had my shiny new iPhone 3G for about a week now and feel that I am in a constant battle with bugs.  From apps crashing, to my iPhone randomly resetting itself, it has been a constant struggle. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F23%2Fiphone-20-software-buggy%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F23%2Fiphone-20-software-buggy%2F&amp;source=elctech&amp;style=normal&amp;hashtags=%23iphonedev" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a href="/wp-content/uploads/2008/07/iphonebugs.png"><img class="size-medium wp-image-8 transparent aligncenter" title="iphonebugs" src="/wp-content/uploads/2008/07/iphonebugs-249x300.png" alt="iphone 2.0 software bugs" width="249" height="300" /></a></p>
<p style="text-align: left;">So I have had my shiny new iPhone 3G for about a week now and feel that I am in a constant battle with bugs.  From apps crashing, to my iPhone randomly resetting itself, it has been a constant struggle.  After doing some research, I have found that I am not alone.  Here are some of the larger problems that I have encountered:</p>
<p style="text-align: left;">
<ol style="text-align: left;">
<li>Safari &#8211; Often freezes especially when switching between pages.  It also will cause a random reset on my iPhone.</li>
<li>Contacts &#8211; This seems to be the buggiest of all!  I have found that simple navigation has slowed down tremendously from the 1.0 software.  I find myself waiting sometimes 3 seconds to pull up a new contact (I know, I&#8217;m very impacient)</li>
<li>Pretty much every app &#8211; I know the SKD is new and people are new to development for the iPhone, but come on developers.  This isn&#8217;t Java or C#, you have to do YOUR OWN garbage collection.  I think the main problem with apps is that programmers rushed to get them into the App Store and got lazy when it came time to &#8220;tie up loose ends&#8221; with their pointers and whatnot. bleh&#8230;</li>
</ol>
<div style="text-align: left;">Well, that&#8217;s my rant today about iPhone 2.0 software update.  I hope that Apple releases a patch in the near future.  In the mean time, I have restored my iPhone and will see how that turns out. Look out soon for my first tutorial where I will detail a &#8220;Hello World&#8221; iPhone programming tutorial for opengl ES. Until then, happy iCoding!</div>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/07/23/iphone-20-software-buggy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iCodeBlog Launched</title>
		<link>http://icodeblog.com/2008/07/22/icodeblog-launched/</link>
		<comments>http://icodeblog.com/2008/07/22/icodeblog-launched/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 03:26:55 +0000</pubDate>
		<dc:creator>brandontreb</dc:creator>
				<category><![CDATA[iPhone Articles]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://icodeblog.com/?p=4</guid>
		<description><![CDATA[<a href="/2008/07/22/icodeblog-launched/"><img align="left" hspace="5" width="150" height="150" src="/wp-content/uploads/2008/07/iphone-150x150.png" class="alignleft wp-post-image tfe" alt="iphone 3g" title="iphone" /></a>Welcome to iCodeBlog!  This blog will mainly focus on iphone programming using the XCode environment.  I will be updating weekly with iphone programming tutorials, news, updates and related nerdy stuff. A little bit about me&#8230; I am a Computer Science student [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F22%2Ficodeblog-launched%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ficodeblog.com%2F2008%2F07%2F22%2Ficodeblog-launched%2F&amp;source=elctech&amp;style=normal&amp;hashtags=iPhone+Articles,Programming" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_5" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-5 transparent" title="iphone" src="/wp-content/uploads/2008/07/iphone.png" alt="iphone 3g" width="500" height="338" /><p class="wp-caption-text">iphone 3g</p></div>
<p>Welcome to iCodeBlog!  This blog will mainly focus on iphone programming using the XCode environment.  I will be updating weekly with iphone programming tutorials, news, updates and related nerdy stuff.</p>
<p><strong>A little bit about me&#8230;</strong></p>
<p>I am a Computer Science student at the University of New Mexico and will be starting my senior year this fall. I became interested in iPhone development with the launch of the web applications and had Apple accept 3 of my web applications.  The <a title="iPhone Web App - Cost Per Square Foot" href="http://www.apple.com/webapps/calculate/costpersquarefootcalculator.html" target="_blank">Cost Per Square Foot Calculator</a>, the <a title="iPhone Web App - Daily Calorie Calculator" href="http://www.apple.com/webapps/calculate/dailycaloriecalculator.html" target="_blank">Daily Calorie Calculator</a> , and a Weight Watchers app that they later pulled due to copyright.</p>
<p>Since the launch of the app store, I have been spending countless hours learning and researching iPhone programming using XCode.  One huge issue I noticed is the extreme lack of iPhone Programming tutorials on the web.  The best I could find was some outdated Hello World tutorial on YouTube.  So, I have decided to create iCodeBlog to share the things that I learn along the way.  So be sure to check back often! </p>
]]></content:encoded>
			<wfw:commentRss>http://icodeblog.com/2008/07/22/icodeblog-launched/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
