<?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>Webmaster-Source &#187; iOS</title>
	<atom:link href="https://www.webmaster-source.com/tag/ios/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.webmaster-source.com</link>
	<description>Useful Resources For Webmasters</description>
	<lastBuildDate>Thu, 24 Aug 2017 02:01:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Twitter Launches &#8220;New New Twitter&#8221; and Ruins iOS App</title>
		<link>https://www.webmaster-source.com/2011/12/09/twitter-launches-new-new-twitter-and-ruins-ios-app/</link>
		<comments>https://www.webmaster-source.com/2011/12/09/twitter-launches-new-new-twitter-and-ruins-ios-app/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 09:06:14 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Redesign]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4434</guid>
		<description><![CDATA[Starting Thursday, Twitter began rolling out their latest redesign, dubbed &#8220;New New Twitter&#8221; by users. The new design looks okay, albeit a bit heavy on the boxes, but some of the changes it brings aren&#8217;t so welcome. It seems to me as if Twitter is slowly strangling the brilliant simplicity that made it unique and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Starting Thursday, Twitter began rolling out their latest redesign, dubbed &#8220;New New Twitter&#8221; by users. The new design looks okay, albeit a bit heavy on the boxes, but some of the changes it brings aren&#8217;t so welcome. It seems to me as if Twitter is slowly strangling the brilliant simplicity that made it unique and successful, and making the service more and more like Facebook.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4435 imageborder" title="New New Twitter: Home Timeline" src="//www.webmaster-source.com/wp-content/uploads/newnewtwitter-home-redwall_hp.jpg" alt="" width="600" height="347" /></p>
<p>The first change that irks me is the new Connect screen, which replaces the Mentions tab. Instead of getting a listing of replies or tweets mentioning your username, you get something closer to a Facebook feed. The stream is cluttered with messages along the lines of &#8220;Mr. Follower and 6 others are now following you. Isn&#8217;t that great?&#8221; Oh, and anytime someone retweets one of your updates, it goes in there too. You can still get to the Mentions timeline, but it requires a second click. I imagine it&#8217;s even more &#8220;useful&#8221; if you have a half million followers.<span id="more-4434"></span></p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4436 imgborder" title="New New Twitter: 'Connect' Screen" src="//www.webmaster-source.com/wp-content/uploads/newnewtwitter-annoying-connect-screen.jpg" alt="" width="600" height="290" /></p>
<p>I&#8217;m still not sure where they buried the Direct Messages page. I know it must be around here somewhere&#8230;</p>
<p>Next on the list is <a href="http://techcrunch.com/2011/12/08/new-twitter-brand-pages/">&#8220;Brand Pages.&#8221;</a> Now the Twitter profiles for large brands get a few extra features that, while I&#8217;m sure they find useful, kind of detract from the Twitter experience and remind me of Myspace. (Remember them?)</p>
<p>Brand pages get to have a graphical banner on their profile, right above the timeline. They also get to make a featured tweet &#8220;sticky&#8221; and pin it to the top of their timeline. Oh, and did I mention any linked photos or videos in those sticky tweets get auto-expanded?</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4437 imgborder" title="New New Twitter: Brand Page" src="//www.webmaster-source.com/wp-content/uploads/newnewtwitter-brand-page.jpg" alt="" width="600" height="291" /></p>
<p>Now for the icing on the cake. Remember Loren Brichter&#8217;s excellent iOS app? Formerly known as Tweetie, it won an Apple design award before Twitter bought it and made it the official app. Well, Twitter has completely scrapped that codebase and replaced it with something that reminds me of Facebook&#8217;s kludgy app. It&#8217;s missing many of the great features of the old app, and feels very watered down in comparison. But it looks and acts more or less the same on Android, which is&#8230;good for Android users, I guess.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4438 imgborder" title="New New Twitter: iOS App" src="//www.webmaster-source.com/wp-content/uploads/newnewtwitter-ios-app.jpg" alt="" width="560" height="420" /></p>
<p>Gruber <a href="http://daringfireball.net/2011/12/new_twitter">nailed it in his review.</a></p>
<blockquote><p>&#8230;today’s new Twitter, is something else. It’s an attempt at a best way to do Twitter that is as consistent as possible across multiple platforms, ranging from the iPhone to Android to the mobile and desktop web. I don’t want an iPhone app that’s constrained by the restrictions of a mobile web app. The whole reason I prefer native apps is that I like experiences that far exceed what can be done in a web app. This is a native app that looks and feels like it was designed and polished according to the norms of web apps, not other native iPhone apps.</p></blockquote>
<p>It looks to me like #NewNewTwitter is the new <a href="http://scripting.com/2011/03/06.html">#Dickbar</a>. Fortunately, there are still plenty of third-party apps, which have had an <a href="http://thenextweb.com/apps/2011/12/09/iphone-twitter-clients-like-tweetbot-saw-boost-in-sales-from-twitter-4-0-release-backlash/">increase</a> in sales since the update. (<a href="http://click.linksynergy.com/fs-bin/stat?id=1VLWDdrGBrI&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252F%252Fid428851691%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Tweetbot</a> and <a href="http://click.linksynergy.com/fs-bin/stat?id=1VLWDdrGBrI&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ftwittelator-neue-twitter-client%252Fid469270564%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30">Twittelator Neue</a> are a couple of good ones.)</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/12/09/twitter-launches-new-new-twitter-and-ruins-ios-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Create Color Palettes With ColorSchemer Touch</title>
		<link>https://www.webmaster-source.com/2011/11/04/create-color-palettes-with-colorschemer-touch/</link>
		<comments>https://www.webmaster-source.com/2011/11/04/create-color-palettes-with-colorschemer-touch/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 12:26:18 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4375</guid>
		<description><![CDATA[If you do even a little bit of web or graphic design, you might have run into a cool poster or product label somewhere and thought &#8220;I like this color scheme.&#8221; ColorSchemer Touch is a neat iOS app that will help you out with those situations. If you snap a photo, it will let you [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you do even a little bit of web or graphic design, you might have run into a cool poster or product label somewhere and thought &#8220;I like this color scheme.&#8221; <a href="http://www.colorschemer.com/touch_info.php">ColorSchemer Touch</a> is a neat iOS app that will help you out with those situations. If you snap a photo, it will let you tap colors within it and build a color palette.</p>
<p style="text-align: center;"><a href="http://click.linksynergy.com/fs-bin/stat?id=1VLWDdrGBrI&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fcolorschemer%252Fid398004720%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4376 imgborder" title="ColorSchemer Touch" src="//www.webmaster-source.com/wp-content/uploads/colorschemertouch.jpg" alt="" width="600" height="447" /></a></p>
<p>It also has a couple of manual color pickers, including a basic color wheel and the nifty &#8220;LiveSchemes&#8221; tool, and integration with <a href="http://www.colourlovers.com/">Colour Lovers</a>. So you can browse and save other palettes as well as creating your own. You can easily email color palettes or save them to your camera roll, as well as syncing them to Color Lovers.</p>
<p>ColorSchemer Touch is currently free on iTunes, though I believe it is usually $2.99.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/11/04/create-color-palettes-with-colorschemer-touch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building an iPhone App to Parse the Twitter API with NSXMLParser</title>
		<link>https://www.webmaster-source.com/2011/10/24/building-an-iphone-app-to-parse-the-twitter-api-with-nsxmlparser/</link>
		<comments>https://www.webmaster-source.com/2011/10/24/building-an-iphone-app-to-parse-the-twitter-api-with-nsxmlparser/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 11:20:58 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4362</guid>
		<description><![CDATA[iOS has a simple event-based XML parser built in, which makes it fairly easy to do less involved parsing operations without having to load up a third-party framework. This tutorial will show you how to build a simple iPhone application that will download an XML feed from Twitter containing a user&#8217;s tweets, and then display [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>iOS has a simple event-based XML parser built in, which makes it fairly easy to do less involved parsing operations without having to load up a third-party framework. This tutorial will show you how to build a simple iPhone application that will download an XML feed from Twitter containing a user&#8217;s tweets, and then display them with a pretty UI. (You could easily adapt this to parse other XML documents, such as RSS feeds.)</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4364 imgborder" title="Displaying data from a Twitter XML feed in iOS" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-example-fantasyfolder.jpg" alt="" width="600" height="306" /></p>
<h3><span id="more-4362"></span>Getting Started</h3>
<p>First, create a new View-based application. Give it a memorable name like &#8220;TwitterXML.&#8221;</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4365 imgborder" title="Creating a view-based application in Xcode" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-view-based-application.png" alt="" width="600" height="471" /></p>
<p>Now that you have a clean slate to work off, let&#8217;s rename some classes. I find Xcode&#8217;s default naming scheme a bit silly, with the way it prepends the project name to each file. I think the Application Delegate should be called, simply, <em>AppDelegate.m</em> instead of the needlessly long <em>TwitterXMLAppDelegate.m.</em> However, you can&#8217;t just rename the file to whatever your preference is, as that would break things.</p>
<p>You can rename a class project-wide, file and all, by using the Refactoring tool. You can call it up by right-clicking on the class name in the implementation file and choosing &#8220;Refactoring&#8221; from the resulting menu.</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4366" title="Renaming classes with the Refactor tool" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-renaming-classes-with-refactor-tool.png" alt="" width="600" height="352" /></p>
<p>This renaming business is entirely optional as far as this tutorial goes, but it&#8217;s worth know how to do. Imagine if you made a typo in a class name and didn&#8217;t realize it until after you had already referenced it in a few places. It&#8217;s nice to have an automated fix.</p>
<h3>Setting Up the Header File</h3>
<p>Most of our code is going to go in the View controller, named <em>TweetViewController</em> in my case. Switch to the corresponding .h file and we can start setting up properties and whatnot.</p>
<p>First, we need to implement the NSXMLParserDelegate protocol so our class can respond to NSXMLParser delegate methods. This is easily done by adding <em>NSXMLParserDelegate</em> to the <em>@interface</em> line, like so:</p>
<pre class="brush: cpp; title: ; notranslate">
@interface TweetViewController : UIViewController &lt;NSXMLParserDelegate&gt; {
</pre>
<p>Now we need to declare some variables and other objects in the interface block. We need a string to hold the name of the Twitter user whose profile we will be accessing, a mutable array to hold the statuses we&#8217;ve pulled from the parser and a few that are used to hold data temporarily during the parsing process. Also, we need a few IBOutlets so we can update the View once we finish reading the XML data.</p>
<pre class="brush: cpp; title: ; notranslate">
@interface TweetViewController : UIViewController &lt;NSXMLParserDelegate&gt; {
NSString *twitterUser;
NSMutableArray *statuses;
NSString *currentElement;
NSMutableDictionary *currentElementData;
NSMutableString *currentElementString;
IBOutlet UIImageView *backgroundImage;
IBOutlet UILabel *tweetLabel;
IBOutlet UIImageView *avatar;
}
</pre>
<p>Of course, we need to make these objects into properties. This means adding a few property declarations after the interface block ends.</p>
<pre class="brush: cpp; title: ; notranslate">
@property (nonatomic, retain) NSString *twitterUser;
@property (nonatomic, retain) NSMutableArray *statuses;
@property (nonatomic, retain) NSString *currentElement;
@property (nonatomic, retain) NSMutableDictionary *currentElementData;
@property (nonatomic, retain) NSMutableString *currentElementString;
@property (nonatomic, retain) UIImageView *backgroundImage;
@property (nonatomic, retain) UILabel *tweetLabel;
@property (nonatomic, retain) UIImageView *avatar;
</pre>
<p>And then you need to synthesize them in the .m file by adding the following line right after the @implementation line:</p>
<pre class="brush: cpp; title: ; notranslate">
@synthesize twitterUser, statuses, currentElement, currentElementData, currentElementString, backgroundImage, tweetLabel, avatar;
</pre>
<p>Now that that&#8217;s out of the way, we can get to the interesting part.</p>
<h3>Setting Up the Parser</h3>
<p>The first method in the View controller is &lt;em&gt;viewDidLoad&lt;/em&gt;, which fires as soon as the View as loaded. (Subtle, isn&#8217;t it?) We will be putting our initialization stuff in there. Basically, we just need to ready our properties, set the Twitter username and start the parser.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)viewDidLoad {
[super viewDidLoad];
statuses = [[NSMutableArray alloc] init];
currentElement = [[NSString alloc] init];
currentElementData = [[NSMutableDictionary alloc] init];
currentElementString = [[NSMutableString alloc] init];
twitterUser = [NSString stringWithString:@&quot;collis&quot;];
[self parseXMLForUser:twitterUser];
}
</pre>
<p>After the first arrays and dictionaries are initialized, the <em>twitterUser</em> string is set to the username of the Twitter account we want the app to pull the latest statuses from. I&#8217;m using <a href="http://twitter.com/#!/collis">Collis</a>, one of the co-founders of <a href="http://envato.com/">Envato</a>, as an example. You could put any user you want there, so long as they have a cool-looking background on their profile!</p>
<p>The last line calls the <em>parseXMLForUser:</em> method and passes the <em>twitterUser</em> string along with it. We will work on that part next.</p>
<p>The <em>parseXMLForUser:</em> method is responsible for setting up the parser, as well as building the Twitter API URL.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parseXMLForUser:(NSString *)user {

//Build the Twitter API URL by combining the user with the rest of the URL
NSString *urlString = [NSString stringWithFormat:@&quot;http://twitter.com/statuses/user_timeline/%@.xml?count=3&quot;, user];
NSURL *url = [NSURL URLWithString:urlString];

//Create an instance of NSXMLParser and download the XML data from the URL
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];

//Set this class as its own delegate so we can process NSXMLParser callbacks
[parser setDelegate:self];

//Disable namespace support and other things we don't really need
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];

[parser parse]; //Go go gadget XML parser...

[parser release];

}
</pre>
<p>The first part of the method should look familiar to anyone who has worked with C or Java before. It takes our <em>user</em> argument (which contains the text of <em>twitterUser</em>) and splices it into the URL string, just before the <em>.xml</em> part. Cocoa expects URLs to be of the NSURL object type, we create a new one of those and pass it <em>urlString</em>.</p>
<p>After that is done, we create a new instance of the NSXMLParser class and nickname it &#8220;parser.&#8221; We also pass it the new URL object, which it will use to download the contents it finds there at runtime. Next we set the parser&#8217;s delegate to <em>self</em>, or the current class. The next three lines turn off some features we don&#8217;t really need. Finally, we kick the parser into action and leave a <em>[parser release]</em> command to clean up after it&#8217;s done.</p>
<p>That was simple, wasn&#8217;t it? Sadly, that was only the beginning. In order for the parser to, well, <em>parse</em> we still need to implement the delegate methods for NSXMLParser. And we need to make a spiffy UI.</p>
<h3>Building the Parser</h3>
<p>NSXMLParser is what is called an event-based parser. This means it loops around, searching a document for anything that looks like an XML tag. When it finds one, it raises an event. Basically it says &#8220;I found an opening tag named &#8216;something'&#8221; and leaves you to deal with it. The parser does the same thing with ending tags and the text between them. We have to implement delegate methods to handle these events and save the data they find.</p>
<p>Let&#8217;s start with a couple of simple ones.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@&quot;The XML document is now being parsed.&quot;);
}

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSLog(@&quot;Parse error: %d&quot;, [parseError code]);
}
</pre>
<p>The first method fires when NSXMLParser starts to parse the document. For this application, there isn&#8217;t really anything that we need to do at that point. Putting an NSLog there is great for debugging, though. (If your app is crashing, it&#8217;s helpful to know whether it&#8217;s getting to that step or not.) I&#8217;m sure you can guess what the <em>parseErrorOccurred</em> method does. (It logs an error code if the XML document is malformed or if, for some other reason, the parser could not process it.)</p>
<p>Moving on, we have a method that is called when the parser finds an opening XML tag.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {

//Store the name of the element currently being parsed.
currentElement = [elementName copy];

//Create an empty mutable string to hold the contents of elements
currentElementString = [NSMutableString stringWithString:@&quot;&quot;];

//Empty the dictionary if we're parsing a new status element
if ([elementName isEqualToString:@&quot;status&quot;]) {
[currentElementData removeAllObjects];
}

}
</pre>
<p>This one is a bit more complicated. When it&#8217;s called, its arguments are populated with information that the parser found out about the element currently being parsed. It&#8217;s name is what we care about, primarily. Using the properties we created earlier, the method keeps track of the element currently being parsed (we need to know its name in other methods) and whatever is <em>inside</em> the element (between the opening and closing tag). The conditional statement at the end empties our dictionary every time the parser moves on to a new &lt;status&gt; element, as we will have already copied its contents to the statuses array.</p>
<p>The next delegate method takes any characters found inside an XML element and stores it in the <em>currentElementString</em> property for later.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
//Take the string inside an element (e.g. &lt;tag&gt;string&lt;/tag&gt;) and save it in a property
[currentElementString appendString:string];
}
</pre>
<p>And finally, the penultimate method. This one contains the real meat of the parser. It is called whenever NSXMLParser comes across a closing XML tag. And so, it serves as a good place to put most of the data-saving logic.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

//If we've hit the &lt;/status&gt; tag, store the data in the statuses array
if ([elementName isEqualToString:@&quot;status&quot;]) {
[statuses addObject:[currentElementData copy]];
}

//Trim any extra spaces and newline characters from around currentElementString
NSString *string = [currentElementString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

//Store the status data in the currentElementData dictionary
if ([currentElement isEqualToString:@&quot;created_at&quot;]) {
[currentElementData setObject:string forKey:@&quot;created_at&quot;];
} else if ([currentElement isEqualToString:@&quot;text&quot;]) {
[currentElementData setObject:string forKey:@&quot;text&quot;];
} else if ([currentElement isEqualToString:@&quot;retweeted&quot;]) {
[currentElementData setObject:string forKey:@&quot;retweeted&quot;];
} else if ([currentElement isEqualToString:@&quot;id&quot;]) {
[currentElementData setObject:string forKey:@&quot;id&quot;];
} else if ([currentElement isEqualToString:@&quot;profile_image_url&quot;]) {
[currentElementData setObject:string forKey:@&quot;profile_image_url&quot;];
} else if ([currentElement isEqualToString:@&quot;profile_background_image_url&quot;]) {
[currentElementData setObject:string forKey:@&quot;profile_background_image_url&quot;];
} else if ([currentElement isEqualToString:@&quot;profile_link_color&quot;]) {
[currentElementData setObject:string forKey:@&quot;profile_link_color&quot;];
}

}
</pre>
<p>The first code chunk saves the contents of the <em>currentElementData</em> dictionary to the <em>statuses</em> array if, and only if, the ending tag being processed currently is &lt;/status&gt;. If you remember from before, <em>currentElementData</em> will be emptied the next time the <em>didStartElement</em> method is called. Otherwise, the block will be skipped and the application will handle the tasks it needs to run for child elements of &lt;status&gt;.</p>
<p>After stripping out extraneous spaces and newline characters from either side of <em>currentElementString</em>, so we don&#8217;t end up with weird output, we have a rather long if/else if block. This checks whether the element being parsed is one we want to save (e.g. &#8220;text&#8221; or &#8220;profile_image_url&#8221;) and if it is, it adds it to the element data dictionary.</p>
<p>The code may seem a bit strange at first, but it should make more sense after you become more familiar with it.</p>
<p>And now, for the last delegate method. This one fires when the document has finished parsing. This is the place to launch any operations we want to be started after we have our data. As you can see below, logging the <em>statuses</em> array to the console and then calling a method to display that data is what we will be doing here.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)parserDidEndDocument:(NSXMLParser *)parser {
//Document has been parsed. It's time to fire some new methods off!
NSLog(@&quot;%@&quot;, statuses);
[self updateView];
}
</pre>
<h3>The View</h3>
<p>After all that code, let&#8217;s work on the interface. Double-click the <em>TweetViewController.xib</em> file (or whatever your View XIB is called) in the Xcode sidebar to open it in Interface Builder. Now that your screen is sufficiently cluttered with windows, you want to drag a UIImageView from the Library window into your View canvas. Make sure that it is sized to fit the whole available area.</p>
<p>Of course, the Image View won&#8217;t be much use to us unless we link it with the controller. Right-click on the File&#8217;s Owner icon and drag the little rubberband/wire thing from the <em>backgroundImage</em> Outlet over to the UIImageView and drop it. The File&#8217;s Owner overlay window should update to show the Image View as being connected to <em>backgroundImage</em>.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4367 imgborder" title="Adding a UIImageView in Interface Builder" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-ib-adding-uiimageview.png" alt="" width="600" height="440" /></p>
<p>I think this app would be better if it used a horizontal orientation, don&#8217;t you? Click the little arrow icon in the upper right corner of the View canvas. Interface Builder should automagically resize the Image View inside it to still fill the View. Save the XIB file out and switch back to Xcode. Now we have to configure the application to use a landscape orientation instead of the default portrait one.</p>
<p>Inside your controller class there should be a method called <em>shouldAutorotateToInterfaceOrientation</em>. It&#8217;s commented out by default. Uncomment it and change the interfaceOrientation to <em>UIInterfaceOrientationLandscapeLeft</em>. It should look like this:</p>
<pre class="brush: cpp; title: ; notranslate">
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
</pre>
<p>Back in Interface Builder, drop in a new UIImageView. We won&#8217;t be hooking this one up to an IBOutlet. Instead, we will set the image to the word bubble image I made (it&#8217;s in the project file), resize the view to be the same point-width as the image (375&#215;208) and position it neatly over the background image view. I also lowered the opacity a bit, just because I liked the effect.</p>
<p>Now we need a way to display the contents of the latest tweet. So drag a UILabel onto the View canvas and resize it to fit nicely over the word bubble graphic. Turn the &#8220;# Lines&#8221; setting up to five or so, set the font size to something that looks legible and change the &#8220;Line Breaks&#8221; option to &#8220;Word Wrap. Then wire it up to the <em>tweetLabel</em> IBOutlet, like you did with the UIImageView.</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4368" title="Adding the Label" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-adding-the-label.png" alt="" width="600" height="421" /></p>
<p>Ready to tie everything together? Switch back to Xcode and add one last method to the controller class.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)updateView {

//Select the latest tweet
NSDictionary *latestTweet = [statuses objectAtIndex:0];

//Set the tweet label
[tweetLabel setText:[latestTweet objectForKey:@&quot;text&quot;]];

//Set the background image after downloading it.
NSString *urlString = [latestTweet objectForKey:@&quot;profile_background_image_url&quot;];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *background = [[UIImage alloc] initWithData:data];
[backgroundImage setImage:background];
backgroundImage.contentMode = UIViewContentModeScaleAspectFill;

}
</pre>
<p>While it looks nearly as intimidating as the NSXMLParser <em>didEndElement</em> delegate method, it&#8217;s actually quite a bit simpler. The first line gets the newest tweet from the <em>statuses</em> array, the =<em>[tweetLabel setText:&#8230;]</em>= line updates the UILabel with the text of the message, and the last part changes the background image behind the word bubble to be the same as the Twitter user&#8217;s profile background.</p>
<p>That last part needs the most explanation. Before we can display the image (which is what the <em>setImage</em> line does) we have to download it first. Taking the <em>urlString</em>, which of course is a string containing the web address where the image can be found, we convert it to a NSURL object, which is named <em>url</em>. We create a new NSData object and use it&#8217;s <em>dataWithContentsOfURL</em> method to download the image. (Cocoa requires that URLs used with it&#8217;s objects be of the NSURL class.) Next we initialize a UIImage object with the NSData object and set it as the image in the UIImageView named backgroundImage. Oh, and we set the content mode to <em>UIViewContentModeScaleAspectFill</em> so it&#8217;s not squished funny.</p>
<p>Now if you build and run the app, you should get something like this:</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4369 imgborder" title="A styled tweet in the iOS app" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-first-demo-tweet-on-bg.png" alt="" width="600" height="394" /></p>
<p>Before we free up our allocated memory and finish the app up, let&#8217;s add one more thing: an avatar field! Switch back to Interface Builder and add a new UIImageView. Resize it to 52&#215;52 or so and wire it up to the &#8220;avatar&#8221; IBOutlet. Re-using the code from the background image bit, we can quickly modify it for the avatar.</p>
<pre class="brush: cpp; title: ; notranslate">
//Set the avatar image after downloading it.
NSString *avatarUrlString = [latestTweet objectForKey:@&quot;profile_image_url&quot;];
NSURL *avatarUrl = [NSURL URLWithString:avatarUrlString];
NSData *avatarData = [NSData dataWithContentsOfURL:avatarUrl];
UIImage *avatarImage = [[UIImage alloc] initWithData:avatarData];
[avatar setImage:avatarImage];
avatar.contentMode = UIViewContentModeScaleAspectFill;
</pre>
<p>That goes in the <em>updateView</em> method, after everything else.</p>
<p>Now, before we can say the application is finished, there is one thing that needs to be done. Any memory we specifically allocated should be released. It&#8217;s not a huge deal in a single-view app, as it will be forcefully freed up on exit, but it&#8217;s a good habit to get into. (In more complicated applications, you can expect to see frequent crashes if you don&#8217;t release objects when you&#8217;re done with them.) It&#8217;s easy to do. For every object we explicitely <em>alloc</em> or <em>retain</em>, we have to <em>release</em> somewhere. The <em>dealloc</em> method is called when the application quits in this case, so we put most of our <em>release</em> statements there.</p>
<p>You can learn more about iOS memory management in <a href="http://mobile.tutsplus.com/freebies/qa-sessions/qa-session-3-ios-memory-management-and-best-practices/">this screencast</a>.</p>
<pre class="brush: cpp; title: ; notranslate">
- (void)dealloc {
[twitterUser release];
[statuses release];
[currentElement release];
[currentElementData release];
[currentElementString release];
[backgroundImage release];
[tweetLabel release];
[avatar release];
[super dealloc];
}
</pre>
<p>And we&#8217;re done!</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-4370 imgborder" title="And we're done!" src="//www.webmaster-source.com/wp-content/uploads/nsxmlparser-final.png" alt="" width="505" height="342" /></p>
<h3>Additional Challenge</h3>
<p>Want to add to this sample application? Try making the following change: Use an <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html">NSTimer</a> to cycle through the items in the <em>statuses</em> array and update the View accordingly. Most of the groundwork has been laid for you already.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/10/24/building-an-iphone-app-to-parse-the-twitter-api-with-nsxmlparser/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Lions and iClouds and iOS 5: WWDC 2011 Roundup</title>
		<link>https://www.webmaster-source.com/2011/06/07/lions-and-iclouds-and-ios-5-wwdc-2011-roundup/</link>
		<comments>https://www.webmaster-source.com/2011/06/07/lions-and-iclouds-and-ios-5-wwdc-2011-roundup/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 04:08:19 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[WWDC]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4115</guid>
		<description><![CDATA[Too busy to watch the liveblogs of Apple&#8217;s big WWDC keynote? Here&#8217;s a quick rundown of some of the most noteworthy links. There&#8217;s a lot changing in iOS, and OS X Lion is just around the corner. Then there&#8217;s iCloud, the crazy service that does more than most speculated. iOS 5 overhauls notifications, messaging while [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-4116" title="iCloud" src="//www.webmaster-source.com/wp-content/uploads/icloud.jpg" alt="" width="140" height="147" />Too busy to watch the liveblogs of Apple&#8217;s big WWDC keynote? Here&#8217;s a quick rundown of some of the most noteworthy links. There&#8217;s a lot changing in iOS, and OS X Lion is just around the corner. Then there&#8217;s iCloud, the crazy service that does more than most speculated.</p>
<ul>
<li><a href="http://arstechnica.com/apple/news/2011/06/ios-5-overhauls-notifications-messaging-while-cutting-the-usb-cord.ars">iOS 5 overhauls notifications, messaging while cutting the USB cord</a> [Ars]</li>
<li><a href="http://www.macstories.net/news/the-big-wwdc-2011-keynote-roundup/">The Big WWDC 2011 Keynote Roundup</a> [Macstories]</li>
<li><a href="http://www.bgr.com/2011/06/06/apple-ios-5-iphone-ipad-2-hands-on/">Apple iOS 5 iPhone / iPad 2 hands-on!</a> [Boy Genius Report]</li>
<li><a href="http://iphone.appstorm.net/general/app-news/10-new-features-to-get-stoked-about-in-ios-5/">10 New Features to Get Stoked About in iOS 5</a> [AppStorm]</li>
<li><a href="http://www.engadget.com/wwdc-2011/apple-ios-5-hands-on-preview/">Apple iOS 5 hands-on preview</a> [Engadget]</li>
<li><a href="http://techcrunch.com/2011/06/06/apple-imessages/">Apple Has Finally Stuck A Dagger Into SMS. I Love It.</a> [TechCrunch]</li>
<li><a href="http://www.bgr.com/2011/06/06/apple-icloud-coming-today-replaces-mobileme/">Apple iCloud announced for free, replaces MobileMe</a> [Boy Genius Report]</li>
<li><a href="http://www.tuaw.com/2011/06/06/mobileme-stays-live-through-june-30-2012/">MobileMe stays live through June 30, 2012</a> [TUAW]</li>
<li><a href="http://www.macrumors.com/2011/06/06/apple-introduces-icloud-contact-cal-docs-photos-and-music-syncing-free-of-charge/">Apple Introduces iCloud: Contact, Cal, Docs, Photos, and Music Syncing Free of Charge</a> [TUAW]</li>
<li><a href="http://arstechnica.com/apple/news/2011/06/mac-os-x-lion-to-arrive-in-july-via-mac-app-store.ars">Mac OS X Lion to arrive in July via Mac App Store for $29</a> [Ars]</li>
<li><a href="http://arstechnica.com/apple/news/2011/06/lion-server-will-be-an-extra-50-via-the-mac-app-store.ars">Lion Server will be an extra $50 via the Mac App Store</a> [Ars]</li>
<li><a href="http://www.tuaw.com/2011/06/06/lion-requirements-64-bit-cpu-2-gb-of-ram/">Lion requirements: 64-bit CPU, 2 GB of RAM</a> [TUAW]</li>
<li><a href="http://www.macstories.net/news/ibookstore-finally-comes-to-itunes/">iBookstore Finally Comes To iTunes</a> [Macstories]</li>
<li><a href="http://www.macstories.net/news/find-my-iphone-1-2-released-supports-notifications-for-offline-devices/">Find My iPhone 1.2 Released, Supports Notifications for Offline Devices</a> [Macstories]</li>
<li><a href="http://www.macstories.net/news/app-store-now-lets-you-download-not-available-apps-like-tweetie-1/">App Store Now Lets You Download Not-Available Apps, Like Tweetie 1</a> [Macstories]</li>
<li><a href="http://www.macstories.net/news/wwdc-2011-keynote-available-for-streaming/">WWDC 2011 Keynote Available for Streaming</a> [Macstories]</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/06/07/lions-and-iclouds-and-ios-5-wwdc-2011-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple to Announce iCloud, iOS5 and OS X Lion on June 6</title>
		<link>https://www.webmaster-source.com/2011/06/01/apple-to-announce-icloud-ios5-and-os-x-lion-on-june-6/</link>
		<comments>https://www.webmaster-source.com/2011/06/01/apple-to-announce-icloud-ios5-and-os-x-lion-on-june-6/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 12:35:43 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=4105</guid>
		<description><![CDATA[Apple put out a press release that they will be unveiling a large batch of &#8220;next generation software&#8221; on June 6th at the World Wide Developer Conference. This will include iOS 5, Mac OS X 10.7 Lion and something known as iCloud. CUPERTINO, California—May 31, 2011—Apple® CEO Steve Jobs and a team of Apple executives [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apple put out <a href="http://www.apple.com/pr/library/2011/05/31wwdc.html">a press release</a> that they will be unveiling a large batch of &#8220;next generation software&#8221; on June 6th at the World Wide Developer Conference. This will include iOS 5, Mac OS X 10.7 Lion and something known as <em>iCloud</em>.</p>
<blockquote><p>CUPERTINO, California—May 31, 2011—Apple® CEO Steve Jobs and a team of  Apple executives will kick off the company’s annual Worldwide Developers  Conference (WWDC) with a keynote address on Monday, June 6 at 10:00  a.m. At the keynote, Apple will unveil its next generation software &#8211;  Lion, the eighth major release of Mac OS® X; iOS 5, the next version of  Apple’s advanced mobile operating system which powers the iPad®, iPhone®  and iPod touch®; and iCloud®, Apple’s upcoming cloud services offering.</p></blockquote>
<p>It is speculated that this press release, specifying exactly what will be covered at the keynote, is a stab at preventing the usual stock drop from disappointed speculators hoping for new hardware. (That will probably be in September.)</p>
<p>We already had a sneak preview of Lion last year, but this should be a look at the final product—as well as a release date. The big news will likely be iOS 5 though, with its rumored widgets and notification overhaul. iCloud is the big mystery—I&#8217;m thinking it will be some sort of storage and syncing API, integrated with iOS and Lion, for app developers to leverage.</p>
<p>Oh, and the iPad versions of the iWork apps are <a href="http://www.apple.com/pr/library/2011/05/31iwork.html">now available on the iPhone</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/06/01/apple-to-announce-icloud-ios5-and-os-x-lion-on-june-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TestFlight: iOS Beta Testing on the Fly</title>
		<link>https://www.webmaster-source.com/2011/02/23/testflight-ios-beta-testing-on-the-fly/</link>
		<comments>https://www.webmaster-source.com/2011/02/23/testflight-ios-beta-testing-on-the-fly/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 11:43:36 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Services and Tools]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=3917</guid>
		<description><![CDATA[If you&#8217;ve ever tried a little iPhone development out, you might have run into an inconvenient problem. Apple uses a code signing system on iOS devices to ensure that software that ends up on them has either passed through the App Store (and has thus been checked for malware-like behavior) or has been assigned to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;ve ever tried a little iPhone development out, you might have run into an inconvenient problem. Apple uses a code signing system on iOS devices to ensure that software that ends up on them has either passed through the App Store (and has thus been checked for malware-like behavior) or has been assigned to the unique device ID using an ad-hoc distribution. This is generally good for the end user, but it&#8217;s a real pain to distribute betas.</p>
<p>Enter <a href="http://testflightapp.com/">TestFlight</a>.</p>
<p style="text-align: center;"><a href="http://testflightapp.com/"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3918 imgborder" title="TestFlight" src="//www.webmaster-source.com/wp-content/uploads/testflight-homepage.jpg" alt="" width="600" height="326" /></a></p>
<p>I&#8217;m not sure how it does it, but TestFlight takes the pain out of iOS beta distribution. You just build an app, upload it, enter some email addresses, and TestFlight magically takes care of the rest.</p>
<p>When a beta tester gets an email from TestFlight, they register their device by logging into the TestFlight website on their iOS device. It installs a provisioning profile over the air, and lets them access your uploaded application builds in the same way.</p>
<p>However it does its magic, TestFlight is an indispensable tool for developers.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2011/02/23/testflight-ios-beta-testing-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple iAd Producer Lets You Design HTML5 Ads Visually</title>
		<link>https://www.webmaster-source.com/2010/12/22/apple-iad-producer-lets-you-design-html5-ads-visually/</link>
		<comments>https://www.webmaster-source.com/2010/12/22/apple-iad-producer-lets-you-design-html5-ads-visually/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 11:57:05 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Ads]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iAd]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Monetization]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=3791</guid>
		<description><![CDATA[Apple has just launched a new OS X application intended for advertisers looking to run ads on Apple&#8217;s iAd network. The software package, called iAd Producer, gives you an iLife-style tool to visually design interactive HTML5 ads. The iAd Producer displays a chart giving an overview of the ad bundle, allowing you to double-click the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Apple has just launched a new OS X application intended for advertisers looking to run ads on Apple&#8217;s iAd network. The software package, called <a href="http://developer.apple.com/iad/iadproducer/">iAd Producer</a>, gives you an iLife-style tool to visually design interactive HTML5 ads.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3792 imgborder" title="Apple iAd Producer Intro" src="//www.webmaster-source.com/wp-content/uploads/apple-iad-producer.jpg" alt="" width="600" height="335" /></p>
<p>The iAd Producer displays a chart giving an overview of the ad bundle, allowing you to double-click the different elements and make changes to them. You can drop in graphics and videos, choose from the common page types used in ads (such as photo and video galleries, wallpaper pickers, coverflow views, etc.) and then preview the final ad in the iPhone simulator. The application also allows you to build iAds for the iPad.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3793 imgborder" title="Apple iAd Producer" src="//www.webmaster-source.com/wp-content/uploads/apple-iad-producer-tree.jpg" alt="" width="600" height="375" /></p>
<p>It&#8217;s a great idea, I think. It may mean more advertisers will join the iAd network, since they will have to invest less resources into their ad in order to get started. A lot of big-name brands probably don&#8217;t have serious web developers on their marketing teams.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2010/12/22/apple-iad-producer-lets-you-design-html5-ads-visually/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS UIFileSharingEnabled Property List Flag</title>
		<link>https://www.webmaster-source.com/2010/11/17/ios-uifilesharingenabled-property-list-flag/</link>
		<comments>https://www.webmaster-source.com/2010/11/17/ios-uifilesharingenabled-property-list-flag/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 11:32:29 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=3703</guid>
		<description><![CDATA[Here&#8217;s a tip for you iOS developers. Have you ever noticed how some apps let you copy files back and forth between their Documents directories and your computer from within iTunes? It&#8217;s very easy to implement it yourself. As a matter of fact, it&#8217;s just a boolean switch in your app&#8217;s plist file. All you [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a tip for you iOS developers. Have you ever noticed how some apps let you copy files back and forth between their Documents directories and your computer from within iTunes? It&#8217;s very easy to implement it yourself. As a matter of fact, it&#8217;s just a boolean switch in your app&#8217;s plist file.</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3704" title="iOS UIFileSharingEnabled" src="//www.webmaster-source.com/wp-content/uploads/ios-uifilesharingenabled.jpg" alt="" width="600" height="351" /></p>
<p>All you have to do is open the plist file in your Xcode project and add the key <a href="http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW20"><code>UIFileSharingEnabled</code></a> with a value of <code>YES</code>. iTunes will display any files in your application&#8217;s Documents folder and allow you to copy them to your computer, or <em>vice versa</em>.</p>
<p>This is a feature I would like to see more developers implement. It would be great for things like games or other apps that don&#8217;t sync with a web service, as it provides a convenient way to back up your progress (e.g. game save files).</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2010/11/17/ios-uifilesharingenabled-property-list-flag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Resources to Get Started With iPhone App Development</title>
		<link>https://www.webmaster-source.com/2010/10/29/a-few-resources-to-get-started-with-iphone-app-development/</link>
		<comments>https://www.webmaster-source.com/2010/10/29/a-few-resources-to-get-started-with-iphone-app-development/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 11:53:27 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=3678</guid>
		<description><![CDATA[Want to write an iPhone app? Assuming you have a couple of necessary prerequisites, namely a Mac and an iPhone or iPod Touch, it&#8217;s not too hard to get started. It is best if you have some programming experience, as even I had a bit of a learning curve with my solid understanding of PHP [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Want to write an iPhone app? Assuming you have a couple of necessary prerequisites, namely a Mac and an iPhone or iPod Touch, it&#8217;s not too hard to get started. It is best if you have some programming experience, as even I had a bit of a learning curve with my solid understanding of PHP and JavaScript. Assuming a little bit of programmatical knowledge, here are a few resources to help you get started with iPhone development.<span id="more-3678"></span></p>
<h3>Books</h3>
<ul>
<li><a href="http://www.amazon.com/iPhone-Application-Development-Dummies-Goldstein/dp/0470568437/webmasterso0d-20">iPhone Application Development For Dummies</a> — This was the first book on iPhone development that I read. It&#8217;s a good intro to the topic, though it skims over the details of Objective-C faster than is probably good, instead focusing on the Cocoa framework. For the language itself, the author has a separate book, <em>Objective-C for Dummies</em>.</li>
<li><a href="http://www.amazon.com/Beginning-iPhone-Programming-Objective-C-Programmer/dp/0470500972/">Beginning iPhone SDK Programming with Objective-C</a> — This book doesn&#8217;t hold your hand as much as the For Dummies book, which makes things difficult if you don&#8217;t already have a little bit of an understanding of Objective-C and Cocoa. It is more in-depth though.</li>
<li><a href="http://www.amazon.com/Cocoa-Objective-C-Running-Foundations-programming/dp/0596804792/webmasterso0d-20">Cocoa and Objective-C: Up and Running</a> — I have not read this book, but it is by the author of the Cocoa Dev Central website&#8230;and an O&#8217;Reilly Press book as well.</li>
</ul>
<h3>Websites</h3>
<ul>
<li><a href="http://cocoadevcentral.com/">Cocoa Dev Central</a> — This is probably the quickest and most friendly way to learn Objective-C and Cocoa online.</li>
<li><a href="http://mobile.tutsplus.com/category/tutorials/iphone/">Mobiletuts+</a> — Yes, Envato has a mobile development Tuts+ blog. (It was only a matter of time&#8230;) You can expect the same sort of high-quality tutorials as Nettuts+ and Psdtuts+.</li>
<li><a href="http://stackoverflow.com/">Stack Overflow</a> — Having trouble figuring something out? Ask a question and get a variety of responses within minutes. It&#8217;s like Digg or Reddit, but for finding solutions to programming problems.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2010/10/29/a-few-resources-to-get-started-with-iphone-app-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcode 4: The Coda of Compiled Software Development?</title>
		<link>https://www.webmaster-source.com/2010/07/30/xcode-4-the-coda-of-compiled-software-development/</link>
		<comments>https://www.webmaster-source.com/2010/07/30/xcode-4-the-coda-of-compiled-software-development/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 11:01:31 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=3485</guid>
		<description><![CDATA[I noticed something interesting recently. The new version of Apple&#8217;s Xcode development suite (which is used to build applications of iPhones and OS X) is starting remind me a little of Coda and Espresso. The latter two applications are one-window development environments for web developers. Coda, which is similar to Espresso but was released first, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-3488" title="Xcode" src="//www.webmaster-source.com/wp-content/uploads/xcode-icon.jpg" alt="" width="128" height="128" />I noticed something interesting recently. The <a href="http://developer.apple.com/technologies/tools/whats-new.html">new version of Apple&#8217;s Xcode development suite</a> (which is used to build applications of iPhones and OS X) is starting remind me a little of <a href="http://www.panic.com/coda/">Coda</a> and <a href="http://macrabbit.com/espresso/">Espresso</a>. The latter two applications are one-window development environments for web developers.</p>
<p>Coda, which is similar to Espresso but was released first, combines a powerful text editor with FTP syncing, visual CSS editing and support for the SVN versioning system. This has proven to be popular among web designers looking to streamline their workflow.</p>
<p>Xcode 4 is taking the same one-window approach, bringing the previously separate Interface Builder application inside of Xcode. The UI is also looking a lot more streamlined. The boring Windows-style file tree pane on the left hand side has been redesigned to look more like the iTunes sidebar. (Which is another interface feature of Espresso and Coda.)</p>
<p>Xcode is already a great IDE, and a pleasure to work with. The changes should make it even better, and more in line with the &#8220;Mac-like&#8221; feel the great tools that other developers have been building for web designers.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2010/07/30/xcode-4-the-coda-of-compiled-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/


Served from: www.webmaster-source.com @ 2026-05-20 14:50:01 by W3 Total Cache
-->