<?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>GeekyGoodness &#187; COCOA</title>
	<atom:link href="http://www.geekygoodness.com/category/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekygoodness.com</link>
	<description>Software Developer</description>
	<lastBuildDate>Tue, 17 Aug 2010 22:49:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Quick glance at NSOperationQueue</title>
		<link>http://www.geekygoodness.com/2009/11/30/quick-glance-at-nsoperationqueue/</link>
		<comments>http://www.geekygoodness.com/2009/11/30/quick-glance-at-nsoperationqueue/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 08:59:47 +0000</pubDate>
		<dc:creator>Curtis Hard</dc:creator>
				<category><![CDATA[COCOA]]></category>

		<guid isPermaLink="false">http://www.geekygoodness.com/?p=120</guid>
		<description><![CDATA[I was recently having a quick play with threading in COCOA ( because I needed to run some code on another thread ) and stumbled across NSOperationQueue within the docs. Basically, NSOperationQueue handles NSOperation&#8217;s, you give it an NSOperation, it will queue it, and run it when it gets to that part in the queue, [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently having a quick play with threading in COCOA ( because I needed to run some code on another thread ) and stumbled across NSOperationQueue within the docs. Basically, NSOperationQueue handles NSOperation&#8217;s, you give it an NSOperation, it will queue it, and run it when it gets to that part in the queue, but the cool thing is &#8230; it runs the NSOperation on another thread!</p>
<p>Its really simple to use, to run your own code / class, you ust subclass NSOperation and have a method called main which doesn&#8217;t return anything, so &#8230; &#8211; (void)main {}. main will get invoked when the item gets called, once all your code has done what it was set out to do, you simple have to perform a selector on the main thread and do what ever you like.</p>
<p>All that said and done, its pretty god damn awesome!, if you haven&#8217;t had a look at it yet, its worth a go :D.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekygoodness.com/2009/11/30/quick-glance-at-nsoperationqueue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple COCOA Asynchronous image loader class to use in your iPhone app.</title>
		<link>http://www.geekygoodness.com/2009/09/13/a-simple-cocoa-asynchronous-image-loader-class-to-use-in-your-iphone-app/</link>
		<comments>http://www.geekygoodness.com/2009/09/13/a-simple-cocoa-asynchronous-image-loader-class-to-use-in-your-iphone-app/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 21:18:46 +0000</pubDate>
		<dc:creator>Curtis Hard</dc:creator>
				<category><![CDATA[COCOA]]></category>

		<guid isPermaLink="false">http://www.geekygoodness.com/?p=96</guid>
		<description><![CDATA[This isnt a tutorial, this is just some source code that you might find useful. This class will load images in the background so it wont lock your UI up!]]></description>
			<content:encoded><![CDATA[<p>This isnt a tutorial, this is just some source code that you might find useful. This class will load images in the background so it wont lock your UI up!</p>
<p>Heres the header file :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">@interface GGImageLoader <span style="color: #339933;">:</span> NSObject <span style="color: #009900;">&#123;</span>
&nbsp;
	NSURLConnection <span style="color: #339933;">*</span> connection<span style="color: #339933;">;</span>
&nbsp;
	NSURL <span style="color: #339933;">*</span> url<span style="color: #339933;">;</span>
&nbsp;
	NSMutableData <span style="color: #339933;">*</span> mutData<span style="color: #339933;">;</span>
&nbsp;
	UIImage <span style="color: #339933;">*</span> image<span style="color: #339933;">;</span>
&nbsp;
	id delegate<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
@property <span style="color: #009900;">&#40;</span> nonatomic<span style="color: #339933;">,</span> retain <span style="color: #009900;">&#41;</span> UIImage <span style="color: #339933;">*</span> image<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>initWithURL<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSURL <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>aURL<span style="color: #339933;">;</span>
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>setDelegate<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>anObject<span style="color: #339933;">;</span>
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>load<span style="color: #339933;">;</span>
&nbsp;
@end
&nbsp;
@protocol GGImageLoaderProtocol
&nbsp;
@required
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>imageLoader<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>GGImageLoader <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>loader
	   didLoadImage<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>UIImage <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>anImage<span style="color: #339933;">;</span>
&nbsp;
@optional
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>imageLoader<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>GGImageLoader <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>loader
	didReceiveError<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSError <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>anError<span style="color: #339933;">;</span>
&nbsp;
@end</pre></td></tr></table></div>

<p>and heres the main file :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#import &quot;GGImageLoader.h&quot;</span>
&nbsp;
&nbsp;
@implementation GGImageLoader
&nbsp;
@synthesize image<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>dealloc
<span style="color: #009900;">&#123;</span>
	<span style="color: #009900;">&#91;</span>super dealloc<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#91;</span>url release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#91;</span>connection release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#91;</span>mutData release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#91;</span>image release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>initWithURL<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSURL <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>aURL
<span style="color: #009900;">&#123;</span>
	url <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>aURL retain<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> self<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>setDelegate<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>anObject
<span style="color: #009900;">&#123;</span>
	delegate <span style="color: #339933;">=</span> anObject<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>load
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// SHOW NETWORK INDICATOR</span>
&nbsp;
	<span style="color: #009900;">&#91;</span>UIApplication sharedApplication<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">networkActivityIndicatorVisible</span> <span style="color: #339933;">=</span> YES<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// SET UP THE REQUEST</span>
&nbsp;
	NSURLRequest <span style="color: #339933;">*</span> request <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>NSURLRequest alloc<span style="color: #009900;">&#93;</span> initWithURL<span style="color: #339933;">:</span>url<span style="color: #009900;">&#93;</span> autorelease<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// SET UP THE CONNECTION</span>
&nbsp;
	connection <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>NSURLConnection alloc<span style="color: #009900;">&#93;</span> initWithRequest<span style="color: #339933;">:</span>request
												 delegate<span style="color: #339933;">:</span>self<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// NEW MUT DATA</span>
&nbsp;
	mutData <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>NSMutableData new<span style="color: #009900;">&#93;</span> retain<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>connection<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSURLConnection <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>connection
  didFailWithError<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSError <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>error
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#91;</span>delegate respondsToSelector<span style="color: #339933;">:</span>@selector<span style="color: #009900;">&#40;</span>imageLoader<span style="color: #339933;">:</span>didReceieveError<span style="color: #339933;">:</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #009900;">&#91;</span>delegate imageLoader<span style="color: #339933;">:</span>self
			  didReceiveError<span style="color: #339933;">:</span>error<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>connection<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSURLConnection <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>connection
	didReceiveData<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSData <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>data
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// APPEND THE DATA</span>
&nbsp;
	<span style="color: #009900;">&#91;</span>mutData appendData<span style="color: #339933;">:</span>data<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>connectionDidFinishLoading<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSURLConnection <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>aConnection
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// ONCE LOADED HIDE NETWORK INDICATOR</span>
&nbsp;
	<span style="color: #009900;">&#91;</span>UIApplication sharedApplication<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">networkActivityIndicatorVisible</span> <span style="color: #339933;">=</span> NO<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// RELEASE THE CONNECTION</span>
&nbsp;
	<span style="color: #009900;">&#91;</span>connection release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// CREATE NEW UIIMAGE FROM THE DATA</span>
&nbsp;
	image <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>UIImage alloc<span style="color: #009900;">&#93;</span> initWithData<span style="color: #339933;">:</span>mutData<span style="color: #009900;">&#93;</span> retain<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#91;</span>delegate respondsToSelector<span style="color: #339933;">:</span>@selector<span style="color: #009900;">&#40;</span>imageLoader<span style="color: #339933;">:</span>didLoadImage<span style="color: #339933;">:</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #009900;">&#91;</span>delegate imageLoader<span style="color: #339933;">:</span>self
				 didLoadImage<span style="color: #339933;">:</span>image<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
@end</pre></td></tr></table></div>

<p>Its pretty self explanatory, meerly do the following to get it to work..</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">GGImageLoader <span style="color: #339933;">*</span> imageLoader <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>GGImageLoader alloc<span style="color: #009900;">&#93;</span> initWithURL<span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>NSURL URLWithString<span style="color: #339933;">:</span>@<span style="color: #ff0000;">&quot;myimageurlhere&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> retain<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#91;</span>imageLoader setDelegate<span style="color: #339933;">:</span>self<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#91;</span>imageLoader load<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>The class also has delegate methods and a protocol to follow, so we know when the image has loaded, you can use the GGImageLoaderProtocol in your header file if you like.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>imageLoader<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>GGImageLoader <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>imageLoader didReceieveError<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>NSError <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>anError
<span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>imageLoader<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>GGImageLoader <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>imageLoader didLoadImage<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span>UIImage <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>anImage
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// BE SURE TO RELEASE THE IMAGE LOADER</span>
	<span style="color: #009900;">&#91;</span>imageLoader release<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>and thats about it, hope its helps some people out!</p>
<p>If ive made a mistake anywhere in this please say, it was a rush post!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekygoodness.com/2009/09/13/a-simple-cocoa-asynchronous-image-loader-class-to-use-in-your-iphone-app/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
