<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Apple mania</title>
		<link>http://maclove.pe.kr/</link>
		<description>애플, 아이폰에 대한 이야기들.</description>
		<language>ko</language>
		<pubDate>Wed, 17 Aug 2011 06:41:25 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>Apple mania</title>
		<url><![CDATA[http://cfile24.uf.tistory.com/image/1529B0264A5559A06EF784]]></url>
		<link>http://maclove.pe.kr/</link>
		<description>애플, 아이폰에 대한 이야기들.</description>
		</image>
		<item>
			<title>터칭 아이폰 2장을 새롭게 업데이트 했습니다.</title>
			<link>http://maclove.pe.kr/39</link>
			<description>&lt;br /&gt;
안녕하세요. 책의 도입부인 2장에서 툴 업데이트로 인해 최신 iOS SDK에서 예제를 따라 할 수 없는 상황입니다.&lt;br /&gt;
책의 2장을 새로운 SDK에 맞게 수정해서 원문으로 공개합니다. 되도록 많은 분들이 이 글을 보고, 업데이트 된 &lt;br /&gt;
내용을 통해서 책을 보시면 좋겠습니다. &lt;br /&gt;
&lt;br /&gt;
출판물의 특성상 이미 출판된 책의 내용을 고칠 길은 없습니다. 그 동안의 혼란에 죄송하다는 말씀을 드립니다.&lt;br /&gt;
아래 링크 외에도 인사이트 출판사의 스프링 노트에도 업데이트 할 예정입니다.&lt;br /&gt;
&lt;br /&gt;
* 공개된 2장은 아직 최종 교정을 거치지 않았고, 필자가 임의로 편집한 것입니다. 양해부탁드립니다. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;a href=&quot;http://iphone4u.tistory.com/attachment/cfile9.uf@127C1E1F4CD998E606B389.zip&quot;&gt;&lt;img src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; 02장 설치 및 개발환경 구축.zip&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-39-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-39-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-39-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=11126835&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<category>2장</category>
			<category>터칭 아이폰</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/39</guid>
			<comments>http://maclove.pe.kr/39#entry39comment</comments>
			<pubDate>Wed, 10 Nov 2010 21:00:00 +0900</pubDate>
		</item>
		<item>
			<title>예제를 최신 SDK에서 컴파일 되도록 업데이트 했습니다.</title>
			<link>http://maclove.pe.kr/38</link>
			<description>&lt;br /&gt;
예제는 다음의 구글 코드 사이트에서 관리되고 있습니다. 수정되는 사항은 항상 이곳에 반영되니, 그때 그때 업데이트 하시면 되겠습니다.&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/touching-iphone/&lt;br /&gt;
&lt;br /&gt;
우선 본인의 맥에서 소스를 다운받기 위해서는 다음 그림과 같이 Terminal을 실행시킨 후 다음 명령을 입력하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; mkdir example&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- 저장하고자 하는 디렉터리를 하나 생성함 &lt;br /&gt;
&amp;gt; cd example&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- 해당 디렉터리로 이동&lt;br /&gt;
&amp;gt; &lt;tt id=&quot;checkoutcmd&quot;&gt;svn checkout &lt;strong&gt;&lt;em&gt;http&lt;/em&gt;&lt;/strong&gt;://touching-iphone.googlecode.com/svn/trunk/ touching-iphone-read-only &lt;br /&gt;
&lt;br /&gt;
감사합니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/177DEB114CBDDDC6044523&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;Screen shot 2010-10-19 at 1.58.32 PM.png&quot; height=&quot;348&quot; width=&quot;640&quot;/&gt;&lt;/div&gt;&lt;br /&gt;
기존의 압축된(zip) 예제 링크도 새롭게 업데이트 하였습니다. &lt;br /&gt;
&lt;br /&gt;
&lt;/tt&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-38-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-38-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-38-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/38</guid>
			<comments>http://maclove.pe.kr/38#entry38comment</comments>
			<pubDate>Wed, 20 Oct 2010 03:21:38 +0900</pubDate>
		</item>
		<item>
			<title>책 관련 문의사항은 메일을 주시기 바랍니다.</title>
			<link>http://maclove.pe.kr/37</link>
			<description>&lt;br /&gt;
안녕하세요. 많은 독자분들이 책에 대해서 궁금한 점이 있을것이라고 생각됩니다.&lt;br /&gt;
책이 나오고 거의 바로 새롭게 아이폰 SDK가 버젼없이 되면서 상당한 혼란이 있었습니다.&lt;br /&gt;
기본적으로 책이 쓰여지는 시점에 사용했던 SDK와 iOS를 기준으로 책이 쓰여져 있기 때문에,&lt;br /&gt;
현재 사용하시는 iOS와 SDK와 다른 부분이 있을 수 있습니다. 책을 쓰는 시점에서 모든 예제를&lt;br /&gt;
직접 만들어서 정상적으로 돌아가는지 전부 두번씩 확인을 하였습니다. &lt;br /&gt;
&lt;br /&gt;혹시 예제가 동작되지 않거나, 기타 책과 관련된 문의사항이 있으시면 저에게 메일을 보내주시기 바랍니다.&lt;br /&gt;
&lt;A href=&quot;mailto:fromdj2k@gmail.com&quot;&gt;fromdj2k@gmail.com&lt;/A&gt; 입니다. 감사합니다. &lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-37-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-37-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-37-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/37</guid>
			<comments>http://maclove.pe.kr/37#entry37comment</comments>
			<pubDate>Mon, 04 Oct 2010 11:30:29 +0900</pubDate>
		</item>
		<item>
			<title>Xcode 3.2의 인터페이스 빌더에서 Identity 탭의 클래스 편집</title>
			<link>http://maclove.pe.kr/36</link>
			<description>&lt;br /&gt;
책의 2장의 그림27에 있는 것과 같이 기존에는 클래스의 액션과 아웃랫을 Identity 창에서 편집할 수 있었습니다.&lt;br /&gt;
Xcode 3.2로 업데이트 되면서 그 위치가 Library 쪽으로 이동했습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/141AB7204AACF99283583D&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile22.uf@141AB7204AACF99283583D.png&quot; height=&quot;270&quot; width=&quot;400&quot;/&gt;&lt;/div&gt;&lt;br /&gt;
&amp;lt;그림1&amp;gt; 3.1.x 에서는 Identity에서 합니다.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;img src=&quot;http://cfile1.uf.tistory.com/original/187B4D1E4B3EDAE86DF1A6&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;Screen shot 2010-01-02 at 12.33.11 AM.png&quot; height=&quot;723&quot; width=&quot;363&quot;/&gt;&lt;/div&gt;&lt;br /&gt;
&amp;lt;그림2&amp;gt; 3.2 부터는 Library 의 Classes 탭에서 가능합니다.&lt;br /&gt;
&lt;br /&gt;
3.2로 업데이트 하신 분들은 위 사항을 참고하시기 바랍니다. &lt;br /&gt;
&lt;br /&gt;*&lt;span&gt;miriet 님의 지적대로 기존의 그림이 오해의 소지가 있어서 그림을 다시 업데이트 합니다. iPhoneRefViewController 를 선택하신 후에 Actions 탭을 선택하시고 작업을 진행하셔야 합니다. 번거롭게 해 드려서 죄송합니다.&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-36-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-36-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-36-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=4179955&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Books</category>
			<category>아이폰</category>
			<category>알림</category>
			<category>터칭! 아이폰</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/36</guid>
			<comments>http://maclove.pe.kr/36#entry36comment</comments>
			<pubDate>Sun, 13 Sep 2009 22:56:56 +0900</pubDate>
		</item>
		<item>
			<title>아이폰 서적을 집필했습니다.</title>
			<link>http://maclove.pe.kr/35</link>
			<description>&lt;div class=&quot;imageblock&quot; style=&quot;display:inline;&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/1175F6164A7242E07E8AA5&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;L.jpg&quot; height=&quot;400&quot; width=&quot;312&quot;/&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;아이폰 서적을 집필했습니다. 8월 21일 부터 판매가 될 예정입니다. &lt;br /&gt;
아이폰 3.0을 기준으로 처음부터 책을 작성했습니다. &lt;br /&gt;
아이폰 개발에 관한&amp;nbsp; A-Z까지 모든 내용을 다 설명하고 있습니다. &lt;br /&gt;
그리고 풍부한 삽화를 이용해서 최대한 쉽게 접근할 수 있도록 했습니다. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;예제는 &lt;a title=&quot;[http://iappcafe.com/book/touch-iphone-examples.zip]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://iappcafe.com/book/touch-iphone-examples.zip&quot;&gt;여기서&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; 다운받으시면 됩니다. 오른편 책 배너 아래에서도 받을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
다음은 서문입니다.&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; width=&quot;630&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(218, 218, 218);&quot; width=&quot;100%&quot;&gt;&amp;nbsp;서문&lt;br /&gt;
&lt;br /&gt;
필자는 처음 아이폰이 발표되었을 때 상당한 충격을 받았습니다. 그리고 아이폰을 통해서 그동안 모르고 지냈던 새로운 세계를 발견하게 되었습니다. 아이폰 SDK로 애플리케이션을 개발하고, 앱 스토어를 통해서 제품을 판매하는 여러가지 과정을 경험하면서 앱스토어가 가지고 올 새로운 변화에 주목하게 되었습니다. 애플은 완전히 새로운 생태계(Ecosystem)인 앱스토어를 성공적으로 만들어냈습니다. 앱스토어를 통해서 개발자는 자기가 개발한 애플리케이션을 손쉽게 세상에 내 놓을 수 있게 되었습니다. 어제 개발한 애플리케이션이 내일이면 미국, 멕시코, 유럽 등 세계 모든 곳으로 퍼져 나갑니다. 지금껏 가지지 못한 배포의 자유를 얻게 된 것입니다. &lt;br /&gt;
&lt;br /&gt;
필자는 이 책에서 아이폰 애플리케이션을 개발하기 위한 모든 내용을 설명할 것입니다. 그리고 모든 내용을 아이폰 SDK 3.0을 기준으로 작성했습니다. 이 책의 목적은 독자가 아이폰 애플리케이션을 쉽게 개발하고 세상에 내 놓을 수 있도록 하는 것입니다. &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
읽기 쉽고 재미있는 책을 만들기 위해서 그림과 삽화를 최대한 넣으려고 노력했습니다. 또한 모든 주제에 대해 예제를 이용해서 직접 개발할 수 있도록 했습니다. 예제는 (특별한 언급이 없는 한) 모두 필자가 개발하고 실제 장비에서 테스트를 진행한 것입니다. 특히 푸시 통보 서비스(Push Notification)를 제공하는 서버 구현 방법을 윈도우와 리눅스 플랫폼에 대해서도 설명했습니다. 그리고 스토어 킷을 통해서 직접 제품을 등록하고 판매할 수 있도록 한 지하철 노선도 예제도 자랑할 만한 예제 입니다. 그 외에도 인터넷 라디오, 게임킷을 활용한 예제, 멀티 터치와 OpenGL 예제 등 재미있는 예제가 많습니다. &lt;br /&gt;
&lt;br /&gt;
이 책이 아이폰 애플리케이션을 개발하고자 하는 독자들에게 좋은 출발점이 될 수 있다면 더 이상 바랄것이 없을 것입니다. &lt;br /&gt;
&lt;br /&gt;
감사의 글 &lt;br /&gt;
&lt;br /&gt;
먼저 책의 출판을 결정해 주신 인사이트 출판사의 한기성 사장님에게 감사 드립니다. 그리고 정말 놀라운 꼼꼼함으로 이 책의 수많은 오류를 잡아주신 김승호 편집자님에게 감사의 마음을 전합니다. 아직 이 책에 오류가 남아있다면 모두 필자의 탓입니다. &lt;br /&gt;
&lt;br /&gt;
책의 4장을 리뷰해 주신 이창희(http://www.cocoadev.co.kr/)님, 3장과 13장을 리뷰해 주신 박종암(http://jongampark.wordpress.com/)님에게 감사의 마음을 전합니다. &lt;br /&gt;
&lt;br /&gt;
7장의 MD2 예제의 주요 클래스를 구현하고 이 책에서 사용할 수 있도록 허락해 준 제임스 휘(James Hui)에게 감사의 마음을 전합니다. 그리고 8장의 스트림 예제에서 사용된 클래스를 작성해서 이 책에서 사용할 수 있도록 허락해 준 맷 갤래거(Matt Gallagher)에게도 감사의 말을 전합니다. &lt;br /&gt;
&lt;br /&gt;
마지막으로 언제나 옆에서 든든한 지원군이 되어준 아내와 곧 태어날 딸에게도 사랑을 전합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
2009.7.18&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
강덕진&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
목차는 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
1장 안녕! 아이폰!&lt;br /&gt;
1.1 아이폰의 등장&lt;br /&gt;
1.2 아이폰/ 아이팟 터치 모델&lt;br /&gt;
1.3 아이폰 OS 3.0의 새로운 기능&lt;br /&gt;
1.4 이 책이 다루는 내용&lt;br /&gt;
1.5 새로운 도전&lt;br /&gt;
&lt;br /&gt;
2장. 설치 및 개발 환경 구축&lt;br /&gt;
2.1. 개발에 필요한 시스템&lt;br /&gt;
2.1.1. 개발에 필요한 시스템 사양&lt;br /&gt;
2.2. 아이폰 SDK 설치&lt;br /&gt;
2.2.1 아이폰 SDK 설치하기&lt;br /&gt;
2.3. Xcode&lt;br /&gt;
2.3.1. 프로젝트 템플릿&lt;br /&gt;
2.3.2 Xcode 화면 구성&lt;br /&gt;
2.4 인터페이스 빌더&lt;br /&gt;
2.4.1 인스펙터&lt;br /&gt;
2.4.2 라이브러리&lt;br /&gt;
2.4.3 문서 창&lt;br /&gt;
2.4.4 연결 패널&lt;br /&gt;
2.5 도움말 접근하기&lt;br /&gt;
2.5.1. 조사 도우미&lt;br /&gt;
2.5.2. 도움말 창&lt;br /&gt;
2.5.3 고급 검색&lt;br /&gt;
2.5.4. 편집기의 문자열을 도움말 창에서 바로 검색하기&lt;br /&gt;
2.5.5 도움말 문서의 형태&lt;br /&gt;
2.6 아이폰 레퍼런스 프로젝트&lt;br /&gt;
2.6.1 프로젝트 생성&lt;br /&gt;
2.6.2 인터페이스 빌더로 화면 디자인하기&lt;br /&gt;
2.6.3 코드 입력하기&lt;br /&gt;
2.7. 아이폰 시뮬레이터&lt;br /&gt;
2.7.1 터치 조작&lt;br /&gt;
2.7.2 리셋하기&lt;br /&gt;
2.8 정리&lt;br /&gt;
2.8.1 참고 사이트&lt;br /&gt;
&lt;br /&gt;
3장 동작 환경 이해하기&lt;br /&gt;
3.1 아이폰 동작 환경&lt;br /&gt;
3.2 애플리케이션 번들&lt;br /&gt;
3.3 Info.pList 파일&lt;br /&gt;
3.4 애플리케이션 델리게이트&lt;br /&gt;
3.5 핵심 디자인 패턴&lt;br /&gt;
3.5.1 델리게이트(delegate)&lt;br /&gt;
3.5.2 데이터 소스(Data Sources)&lt;br /&gt;
3.5.3 타깃-액션 (Target-Action)&lt;br /&gt;
3.5.4 통보(Notification)&lt;br /&gt;
3.5.5 키-값 감시(Key-Value Observing)&lt;br /&gt;
3.6 아이폰 링크&lt;br /&gt;
3.6.1 메일&lt;br /&gt;
3.6.2 전화 걸기&lt;br /&gt;
3.6.3 문자(SMS) 보내기&lt;br /&gt;
3.6.4 지도 보기&lt;br /&gt;
3.6.5 아이튠스&lt;br /&gt;
3.6.6 유튜브(U-Tube) 연결하기&lt;br /&gt;
3.7 커스텀 URL 스키마 만들기&lt;br /&gt;
3.8 정리&lt;br /&gt;
&lt;br /&gt;
4장 화면을 이루는 기본 : 뷰&lt;br /&gt;
4.1 UIWindow&lt;br /&gt;
4.2 UIView와 UIViewController&lt;br /&gt;
4.3 뷰를 직접 만들어 보자&lt;br /&gt;
4.3.1 이미지 준비&lt;br /&gt;
4.3.2 코드 작성&lt;br /&gt;
4.3.3 직접 만든 뷰를 화면에 추가하기&lt;br /&gt;
4.4 UI 브로슈어 프로젝트&lt;br /&gt;
4.5 이미지 뷰(UIImageView)&lt;br /&gt;
4.5.1 인터페이스 빌더를 이용한 화면 디자인&lt;br /&gt;
4.5.2 코드 작성&lt;br /&gt;
4.5.3 이미지 선택하기&lt;br /&gt;
4.5.4 애니메이션 설정&lt;br /&gt;
4.6 웹 뷰(UIWebView)&lt;br /&gt;
4.6.1 디자인하기&lt;br /&gt;
4.6.2 코드 작성하기&lt;br /&gt;
4.6.3 PDF를 보여주자&lt;br /&gt;
4.7 텍스트 입력과 키보드&lt;br /&gt;
4.7.1 화면 구성&lt;br /&gt;
4.7.2 코드 작성&lt;br /&gt;
4.7.3 키보드 숨기기 팁&lt;br /&gt;
4.7.4 키보드 관련 통보(Notification) 이용하기&lt;br /&gt;
4.8 피커 뷰&lt;br /&gt;
4.8.1 코드 분석&lt;br /&gt;
4.8.2 슬롯머신 게임 만들어 보기&lt;br /&gt;
4.8.3 XIB에 객체 추가하기&lt;br /&gt;
4.8.4 로직 구현&lt;br /&gt;
4.9 알림, 경고창&lt;br /&gt;
4.9.1 인터페이스 빌더에서 클래스 내보내기&lt;br /&gt;
4.9.2 병합하기&lt;br /&gt;
4.9.3 UIAlertView 코드 작성&lt;br /&gt;
4.9.4 UIActionSheet 코드작성&lt;br /&gt;
4.10 스크롤 뷰&lt;br /&gt;
4.10.1 스크롤, 확대, 축소 구현하기&lt;br /&gt;
4.10.2 스크롤에 따른 지도확장&lt;br /&gt;
4.10.3 확대에 따른 지도 재설정&lt;br /&gt;
4.10.4 자바스크립트에서 Objective-C 객체에 이벤트 보내기&lt;br /&gt;
4.11 맵 뷰(MKMapView)&lt;br /&gt;
4.11.1 화면 디자인&lt;br /&gt;
4.11.2 코드 작성&lt;br /&gt;
4.11.3 직접 표시 추가하기&lt;br /&gt;
4.11.4 표시 직접 구현하기&lt;br /&gt;
4.12 정리&lt;br /&gt;
&lt;br /&gt;
5장 뷰를 담는 그릇 : 뷰 컨트롤러&lt;br /&gt;
5.1 회전에 대비하기&lt;br /&gt;
5.1.1 자동 회전(AutoRotate)&lt;br /&gt;
5.1.2 자동 크기 조절&lt;br /&gt;
5.1.3 자동 크기조절의 한계&lt;br /&gt;
5.2 테이블 뷰와 테이블 뷰 컨트롤러&lt;br /&gt;
5.2.1 데이터 소스&lt;br /&gt;
5.2.2 인덱스 이용하기&lt;br /&gt;
5.2.3 셀을 직접 꾸미기&lt;br /&gt;
5.2.4 검색 기능 넣기&lt;br /&gt;
5.2.5 테이블 뷰 정리&lt;br /&gt;
5.3 내비게이션 컨트롤러&lt;br /&gt;
5.3.1 내비게이션 컨트롤러 생성하기&lt;br /&gt;
5.3.2 내비게이션 아이템 설정&lt;br /&gt;
5.3.3 편집 / 완료&lt;br /&gt;
5.3.4 테이블 뷰의 항목 이동&lt;br /&gt;
5.4 탭 바 컨트롤러&lt;br /&gt;
5.4.1. 구현하기&lt;br /&gt;
5.4.2 탭 바 아이콘&lt;br /&gt;
5.4.3 배지(Badge)&lt;br /&gt;
5.5 이미지 피커&lt;br /&gt;
5.6 이메일 뷰 컨트롤러&lt;br /&gt;
5.7 정리&lt;br /&gt;
&lt;br /&gt;
6장. 이벤트 처리&lt;br /&gt;
6.1 UIResponder와 응답 체인&lt;br /&gt;
6.1.1 기본 메서드&lt;br /&gt;
6.1.2 아이폰 OS 3.0에 추가된 메서드&lt;br /&gt;
6.1.3 UIResponder 체인 메서드&lt;br /&gt;
6.1.4 이벤트 흐름&lt;br /&gt;
6.2 멀티 터치 동작 원리&lt;br /&gt;
6.2.1 첫 번째 손가락&lt;br /&gt;
6.2.2 손가락 움직이기&lt;br /&gt;
6.2.3 멀티 터치&lt;br /&gt;
6.2.4 손 때기&lt;br /&gt;
6.3 멀티 터치 구현하기&lt;br /&gt;
6.4 두드림(tap)&lt;br /&gt;
6.5 닦아내기(Swipe)와 집기(Pinch)&lt;br /&gt;
6.5.1 닦아내기&lt;br /&gt;
6.5.2 집기(Pinch) 동작&lt;br /&gt;
6.6 흔들기와 실행 취소, 실행 복귀&lt;br /&gt;
6.6.1 NSUndoManager&lt;br /&gt;
6.7 베껴두기와 붙이기&lt;br /&gt;
6.8 정리하기&lt;br /&gt;
&lt;br /&gt;
7장. 그래픽과 애니메이션&lt;br /&gt;
7.1 쿼츠(Quartz)&lt;br /&gt;
7.1.1 직선 그리기&lt;br /&gt;
7.1.2 사각형&lt;br /&gt;
7.1.3 다각형 그리기&lt;br /&gt;
7.1.4 이미지/비트맵 그리기&lt;br /&gt;
7.1.5 PDF 그리기&lt;br /&gt;
7.1.6 그래디언트 (Gradient)&lt;br /&gt;
7.1.7 글꼴 (Font)&lt;br /&gt;
7.1.8 베지어(Bezier) 곡선&lt;br /&gt;
7.1.9 쿼츠 정리&lt;br /&gt;
7.2 코어 애니메이션&lt;br /&gt;
7.2.1 속성 변화 애니메이션&lt;br /&gt;
7.2.2 고급 속성 변화 애니메이션&lt;br /&gt;
7.2.3 전환 효과 (Transition)&lt;br /&gt;
7.3 UIView 애니메이션&lt;br /&gt;
7.4 OpenGL&lt;br /&gt;
7.4.1 프로젝트 생성&lt;br /&gt;
7.4.2 MD2 모델 뷰어&lt;br /&gt;
7.4.3 OpenGL 정리&lt;br /&gt;
7.5 정리&lt;br /&gt;
&lt;br /&gt;
8장. 동영상과 사운드&lt;br /&gt;
8.1. 오디오 형식&lt;br /&gt;
8.2 오디오 재생&lt;br /&gt;
8.2.1 짧은 효과음과 진동&lt;br /&gt;
8.2.2 일반 오디오 재생하기&lt;br /&gt;
8.2.3 AVAudioPlayer로 재생하기&lt;br /&gt;
8.3 오디오 큐 서비스&lt;br /&gt;
8.3.1 녹음하기&lt;br /&gt;
8.3.2 녹음 시간 표시하기&lt;br /&gt;
8.3.3 재생하기&lt;br /&gt;
8.3.4 UI 업데이트를 위한 콜백&lt;br /&gt;
8.4 오디오 세션&lt;br /&gt;
8.4.1 AVAudioSession&lt;br /&gt;
8.5 네트워크 오디오 스트림&lt;br /&gt;
8.6. 동영상 재생&lt;br /&gt;
8.7 아이튠스 라이브러리 접근하기&lt;br /&gt;
8.8 정리&lt;br /&gt;
&lt;br /&gt;
9장. 아이폰 자원 활용&lt;br /&gt;
9.1 장치 정보 얻기&lt;br /&gt;
9.2 가속도계 이용하기&lt;br /&gt;
9.3 주소록 프레임워크&lt;br /&gt;
9.3.1 검색하기&lt;br /&gt;
9.3.2 수정하기&lt;br /&gt;
9.3.3 주소록 UI (AddressbookUI)&lt;br /&gt;
9.4 파일에 저장하기&lt;br /&gt;
9.4.1 접근할 수 있는 디렉터리&lt;br /&gt;
9.4.2 프로퍼티 리스트&lt;br /&gt;
9.4.3 고급 프로퍼티 리스트&lt;br /&gt;
9.4.4 아카이브 (Archive)&lt;br /&gt;
9.5 SQLite&lt;br /&gt;
9.5.1 데이터베이스 열기&lt;br /&gt;
9.5.2 쿼리 하기&lt;br /&gt;
9.5.3 데이터 변경하기&lt;br /&gt;
9.5.4 데이터베이스 닫기&lt;br /&gt;
9.6 코어 데이터&lt;br /&gt;
9.6.1 관리 객체 컨텍스트 생성하기&lt;br /&gt;
9.6.2 관리 객체 컨텍스트에 객체 가져오기&lt;br /&gt;
9.6.3 관리 객체 추가, 삭제&lt;br /&gt;
9.6.4 저장소에 기록하기&lt;br /&gt;
9.6.5 코어 데이터 정리&lt;br /&gt;
9.7 코어 로케이션&lt;br /&gt;
9.8 정리하기&lt;br /&gt;
&lt;br /&gt;
10장. 네트워크 프로그래밍&lt;br /&gt;
10.1 푸시 통보 서비스 (Push Notification Service)&lt;br /&gt;
10.1.1 인증서 준비하기&lt;br /&gt;
10.1.2 OpenSSL&lt;br /&gt;
10.1.3 프로바이더 구현&lt;br /&gt;
10.1.4 메시지 구조&lt;br /&gt;
10.1.5 애플리케이션 구현&lt;br /&gt;
10.1.6 피드백&lt;br /&gt;
10.2 피어 투 피어 연결&lt;br /&gt;
10.2.1 예제 프로젝트 생성&lt;br /&gt;
10.2.2 델리게이트&lt;br /&gt;
10.3 음성 대화 추가하기&lt;br /&gt;
10.3.1 오디오 세션 설정하기&lt;br /&gt;
10.3.2 GKVoiceChatClient 프로토콜 구현&lt;br /&gt;
10.3.3 받은 데이터 알려주기&lt;br /&gt;
10.3.4 client 연결&lt;br /&gt;
10.3.5 대화 시작&lt;br /&gt;
10.4 정리&lt;br /&gt;
&lt;br /&gt;
11장 설정 번들(Settings.bundle)&lt;br /&gt;
11.1 설정 애플리케이션이 설정 번들을 찾는 방법&lt;br /&gt;
11.2 예제 작성&lt;br /&gt;
11.3 설정 번들 파일 디자인하기&lt;br /&gt;
11.3.1 문자열 입력 추가하기&lt;br /&gt;
11.3.2 참, 거짓 스위치&lt;br /&gt;
11.3.3 다중 값 선택&lt;br /&gt;
11.3.4 슬라이더 추가하기&lt;br /&gt;
11.3.5 자식 항목 추가하기&lt;br /&gt;
11.4 새로운 파일을 설정 번들에 추가하기&lt;br /&gt;
11.5 지역화&lt;br /&gt;
11.6 애플리케이션에서 설정 값 접근하기&lt;br /&gt;
11.7 정리&lt;br /&gt;
&lt;br /&gt;
12장 디버깅 가이드&lt;br /&gt;
12.1 Xcode로 디버깅하기&lt;br /&gt;
12.1.1 Xcode 화면 구조 설정하기&lt;br /&gt;
12.1.2 브레이크 포인트 설정하기&lt;br /&gt;
12.1.3 코드 실행하기&lt;br /&gt;
12.1.4 Objective-C 메서드에 브레이크 걸기&lt;br /&gt;
12.1.5 브레이크 포인트를 소리로 알려주기&lt;br /&gt;
12.1.6 브레이크 포인트에 동작 지정하기&lt;br /&gt;
12.2.7 와치 포인트 설정하기&lt;br /&gt;
12.2.8 메모리 덤프하기&lt;br /&gt;
12.2.9 디버깅 중이 아닌 애플리케이션의 NSLog 보기&lt;br /&gt;
12.3 인스투르먼츠(Instruments)&lt;br /&gt;
12.3.1 Leaks (메모리 누수 감지하기)&lt;br /&gt;
12.3.2 OpenGL ES 성능 확인&lt;br /&gt;
12.3.3 Activity Monitor &lt;br /&gt;
12.3.4 정리&lt;br /&gt;
12.4 Clang 정적 분석기&lt;br /&gt;
12.4.1 프로젝트 설정하기&lt;br /&gt;
12.4.2 설치하기 &lt;br /&gt;
12.4.3 분석 진행&lt;br /&gt;
12.5 정리하기&lt;br /&gt;
&lt;br /&gt;
13장 프로그래밍 기법과 팁&lt;br /&gt;
13.1 통보 (Notification)&lt;br /&gt;
13.1.1 통보 큐&lt;br /&gt;
13.2 프로퍼티와 접근자(Accessor)&lt;br /&gt;
13.2.1 synthesize 팁&lt;br /&gt;
13.2.2 프로퍼티 선언&lt;br /&gt;
13.2.3 메모리 해제&lt;br /&gt;
13.3 키-값 코딩 (Key-Value Coding)&lt;br /&gt;
13.3.1 예외 상황&lt;br /&gt;
13.4 키-값 감시 (Key-Value Observing)&lt;br /&gt;
13.4.1 수동으로 알리기&lt;br /&gt;
13.5 객체를 비교하는 방법&lt;br /&gt;
13.6 문자열 다루기&lt;br /&gt;
13.6.1 C 문자열로 초기화하기&lt;br /&gt;
13.6.2 문자열을 형식 문자로 구성하기&lt;br /&gt;
13.7 타이머 (NSTimer)&lt;br /&gt;
13.7.1 지정한 시간에 타이머 시작하기&lt;br /&gt;
13.8 스레드 기초&lt;br /&gt;
13.8.1 스레드 생성하기&lt;br /&gt;
13.8.2 스레드 메서드 구현하기&lt;br /&gt;
13.8.3 런 루프&lt;br /&gt;
13.8.4 스레드의 대안&lt;br /&gt;
13.9 메모리 관리&lt;br /&gt;
13.9.1 규칙1&lt;br /&gt;
13.9.2 규칙2&lt;br /&gt;
13.9.3 규칙3&lt;br /&gt;
13.9.4 규칙4&lt;br /&gt;
13.9.5 규칙5&lt;br /&gt;
13.9.6 규칙6&lt;br /&gt;
13.9.7 규칙7&lt;br /&gt;
13.10 빌드 시에 시뮬레이터와 실제 장치 구분하기&lt;br /&gt;
13.11 빌드 시에 SDK 버전 구분하기&lt;br /&gt;
13.12 무료 버전 타깃 구성하기&lt;br /&gt;
13.13 정리&lt;br /&gt;
&lt;br /&gt;
14. 다국어 지원&lt;br /&gt;
14.1 국제화&lt;br /&gt;
14.2 아이콘 및 리소스 지역화&lt;br /&gt;
14.3 문자열 지역화&lt;br /&gt;
14.4 XIB 지역화&lt;br /&gt;
14.5 Info.pList 지역화&lt;br /&gt;
14.6 정리&lt;br /&gt;
&lt;br /&gt;
15장 배포와 스토어 킷&lt;br /&gt;
15.1 개발을 위한 준비&lt;br /&gt;
15.1.1 개발 인증서 발급&lt;br /&gt;
15.1.2 개발 장비 등록&lt;br /&gt;
15.1.3 애플리케이션 ID (AppID) 만들기&lt;br /&gt;
15.1.4 프로비전 만들기 (Provisioning)&lt;br /&gt;
15.1.5 프로젝트 설정&lt;br /&gt;
15.2 배포 준비&lt;br /&gt;
15.2.1 배포 인증서&lt;br /&gt;
15.2.2 배포 프로비전&lt;br /&gt;
15.2.3 프로젝트 설정&lt;br /&gt;
15.2.4 AdHoc 프로젝트 설정&lt;br /&gt;
15.2.5 빌드 및 배포&lt;br /&gt;
15.2.6 Ad hoc 배포 사용하기&lt;br /&gt;
15.3 애플리케이션 내 판매 (In-App Purchase)&lt;br /&gt;
15.3.1 스토어 킷을 위한 사전 준비&lt;br /&gt;
15.3.2 스토어 킷의 클래스&lt;br /&gt;
15.3.3 상품 정보 얻기&lt;br /&gt;
15.3.4 구매하기&lt;br /&gt;
15.3.5 과거에 구매한 내역&lt;br /&gt;
15.4 정리&lt;br /&gt;
15.4.1 마치며&lt;br /&gt;
&lt;br /&gt;
부록1. Xcode 단축키&lt;br /&gt;
부록2. 아이폰 3.0 클래스 계층도&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-35-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-35-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-35-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=3742005&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Books</category>
			<category>개발서적</category>
			<category>서적</category>
			<category>아이폰</category>
			<category>아이폰 3.0</category>
			<category>집필</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/35</guid>
			<comments>http://maclove.pe.kr/35#entry35comment</comments>
			<pubDate>Thu, 23 Jul 2009 18:12:46 +0900</pubDate>
		</item>
		<item>
			<title>007가방에 담긴 애플제품들</title>
			<link>http://maclove.pe.kr/34</link>
			<description>&lt;p&gt;이사를 가게 돼서 이것저것 짐을 싸고 있다. 디버거를 담던 상자에 애플 제품들만 모두 넣었다. 이 녀석들 만큼은 따로 예쁘게 모아 놓고 싶다. 이상하게도..&amp;nbsp; 내가 어쩌다 애플에 이렇게 심취하게 된 걸까..&amp;nbsp; &lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;%5B##_ATTACH_PATH_##%5D/cfile23.uf@1823E8114A471C1217793C.jpg&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/180E44284A471C123F90D7&quot; width=&quot;644&quot; height=&quot;484&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
  &lt;p&gt;맥북, 아이맥, 아이폰, 아이팟 터치, 나노2개 등등등   &lt;br /&gt;
도대체 얼마나 쓴거야 !!! 애플이 돈을 버는 이유를 알겠네.. 그런데 지금 뒤돌아 보면서 느끼게 되는 것..    &lt;br /&gt;
윈도우보다 MacOS가 더 좋다는 것. 더 효율적이라는 점이다. &lt;/p&gt;
  &lt;p&gt;이틀 전에 어머니 드리려고 노트북을 한 대 구입했는데.. 윈도비스타가 깔려있다. 예쁘지 않고 흥이 나지 않는다. 동작은 잘 하지만, 매력이 없다.    &lt;br /&gt;
MS운영체제의 내부(커널 등의 내부 시스템 구조)는 정말 아름다운 구조로 되어있다. 그리고 정말 잘 만들었다고 생각한다. &lt;/p&gt;
  &lt;p&gt;문제는 스타일이다.&amp;nbsp;&amp;nbsp; &lt;br /&gt;
아무래도 MS스타일에 너무 지친 것 같다. 사실 잘 동작하고 큰 문제없이 일을 해내는 운영체제인데 말이다..&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;%5B##_ATTACH_PATH_##%5D/cfile24.uf@1671EB284A471C12C66814.jpg&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/174456244A471C1307281A&quot; width=&quot;644&quot; height=&quot;484&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p&gt;한가지 느낀 점이라면, 새로운 것에 대한 거부감. 그것만 깬다면 완전히 다른 맛의 세상을 볼 수 이다는 것이다. 맥을 몰랐던 지난 15년이 너무 아쉽게 느껴진다. &lt;/p&gt;&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=3526269&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>기타</category>
			<category>비스타</category>
			<category>스타일</category>
			<category>애플</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/34</guid>
			<comments>http://maclove.pe.kr/34#entry34comment</comments>
			<pubDate>Sun, 28 Jun 2009 16:30:27 +0900</pubDate>
		</item>
		<item>
			<title>Clang으로 코드 오류 찾기</title>
			<link>http://maclove.pe.kr/33</link>
			<description>&lt;p&gt;CLang 정적 분석기&lt;/p&gt;
  &lt;p&gt;CLang 정적 분석기는 Objective-C와 C언어로 작성된 코드를 분석해서 오류를 발견해 주는 툴이다. 디버깅이나 인스투루먼츠는 실행중인 프로그램을 분석하는 동적인 작업인 반면, CLang은 정적으로 소스 코드 자체를 분석해서 오류를 검사한다. 검사할 수 있는 오류는 메모리의 누수, dealloc누락, 널(Null)값 참조 등이 있다. 직접 사용해 보자.(CLang은 또다른 프로젝트 LLVM 컴파일러를 위한 프론트엔트 프로젝트이다. LLVM은 GCC를 기반으로 컴파일 성능을 최적화하는 기술을 적용한 프로젝트이다. CLang 프로젝트의 일부로 CLang 정적 분석기 프로젝트가 포함된다. )&lt;/p&gt;
  &lt;h4&gt;*프로젝트 설정하기&lt;/h4&gt;  &lt;p&gt;CLang분석기를 이용하기 위해서 Xcode상에서 설정할 사항이 하나 있다. &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;%5B##_ATTACH_PATH_##%5D/cfile23.uf@161DC0244A3B65179144F9.png&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/124C25274A3B651721A292&quot; width=&quot;666&quot; height=&quot;521&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
  &lt;p&gt;Base SDK 설정&lt;/p&gt;
  &lt;p&gt;위 그림과 같이 프로젝트 속성에서 Base SDK를 iPhone Simulator로 설정해야 한다. iPhone Device의 경우는 코드 서명 문제로 오류가 발생하기 때문이다. 우리는 정적으로 코드만 분석하면 되기 때문에 시뮬레이터를 선택해 주자.&lt;/p&gt;
  &lt;h4&gt;* 설치하기&lt;/h4&gt;  &lt;p&gt;CLang 정적 분석기는 다음 사이트에서 무료로 다운로드 받을 수 있다. 오픈소스 프로젝트 이기 때문에 소스코드도 받을 수 있다. 아래 링크에서는 친절하게 맥OS를 위해서 바이너리 형태로 파일을 제공해 주기 때문에, 바로 쓸 수 있다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;&lt;a href=&quot;http://clang-analyzer.llvm.org/installation.html&quot;&gt;http://clang-analyzer.llvm.org/installation.html&lt;/a&gt;&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;다운로드 받은 파일의 압축을 풀면 checker-0.211 과 같이 check-버젼에 해당하는 디렉터리가 생긴다. 이 디렉터리를 원하는 위치에 위치시키자. 그리고 경로에 그 위치를 추가한다. 터미널을 실행 시키고, 다음과 같이 PATH에 경로를 추가하자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;$ export PATH=$PATH:/디렉터리 위치/checker-0.211 &lt;/p&gt;
 &lt;/blockquote&gt;  &lt;h4&gt;* 분석 진행&lt;/h4&gt;  &lt;p&gt;이제 Xcode 프로젝트가 있는 디렉터리로 이동하자. 그리고 다음 명령을 실행시키자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;$ xcodebuild clean -configuration Debug     &lt;br /&gt;
$ scan-build -k -V xcodebuild -configuration Debug -sdk iphonesimulator3.0&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;첫 번째 명령은 프로젝트의 빌드파일을 모두 정리하는 명령이다. 두번째가 실제로 CLang분석기를 실행시키는 명령이다. 명령을 내리면 CLang분석기는 디버그 타깃을 시뮬레이터SDK로 빌드하고, 그 결과를 보여줄 것이다. 문제가 발견되면 그림30과 같이 웹페이지를 실행시켜 준다. (만약 프로젝트의 빌드가 실패하면 분석결과 오류를 발견했더라도 실행이 멈추게 되어있다. 성공적으로 빌드되었는지 확인하기 바란다.) 만약 성공적으로 빌드하고 오류가 전혀 발견되지 않았다면 웹페이지는 따로 보여주지 않는다.&lt;/p&gt;
  &lt;p&gt;CLang 분석기로 애플리케이션을 하나 분석해 보자. 아래 그림이 그 결과다. &lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;%5B##_ATTACH_PATH_##%5D/cfile5.uf@1327A1114A3B65188550D7.gif&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/204E05274A3B651819E0F9&quot; width=&quot;845&quot; height=&quot;356&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&amp;lt;그림&amp;gt; 발견한 오류를 웹 페이지로 보여준다.&lt;/p&gt;
  &lt;p&gt;다행이 오류가 하나 만 발견되었다. Leak of returne object 오류인데, 객체를 해제하지 않았다는 오류이다. 한 가지 주의할 점은 CLang 분석기가 오류로 판단했다고 해서 반드시 오류는 아니라는 것이다. 어디까지나 그 것이 오류인지를 판단하는 것은 개발자의 몫이다. 진짜 오류인지 한번 들어가 보자. 왼쪽 화면의 View Report 를 클릭하자. 그러면 문제가 되는 소스코드를 보여주고, 친절하게 설명까지 보여준다. &lt;/p&gt;
  &lt;p&gt;31행에서 NSURL 객체를 생성하고 34행에서 잘 사용했다. 그런데 해제하지 않았다. 실수다. 고치도록 하자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;25: - (void)viewDidLoad {     &lt;br /&gt;
26: [super viewDidLoad];      &lt;br /&gt;
27:      &lt;br /&gt;
28: id sndPath = [[NSBundle mainBundle] pathForResource:@&quot;dog&quot;      &lt;br /&gt;
29: ofType:@&quot;aiff&quot; inDirectory:@&quot;/&quot;];      &lt;br /&gt;
30: // URL 타입 생성      &lt;br /&gt;
31: CFURLRef baseURL = (CFURLRef)[[NSURL alloc]       &lt;br /&gt;
32: initFileURLWithPath:sndPath];      &lt;br /&gt;
33: // SoundID 생성      &lt;br /&gt;
34: AudioServicesCreateSystemSoundID(baseURL,&amp;amp;m_sndID);      &lt;br /&gt;
&lt;b&gt;35: CFRelease(baseURL);       &lt;br /&gt;
&lt;/b&gt;36: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;어떤가? 상당이 좋은 툴이다. 자신이 개발하고 있는 프로젝트도 당장 CLang분석기로 분석 해보자. 큰 도움이 될 것이다. &lt;/p&gt;&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=3466708&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<category>Clang</category>
			<category>iphoneSDK</category>
			<category>디버깅</category>
			<category>아이폰SDK</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/33</guid>
			<comments>http://maclove.pe.kr/33#entry33comment</comments>
			<pubDate>Fri, 19 Jun 2009 19:09:25 +0900</pubDate>
		</item>
		<item>
			<title>iPhone SDK 메모리 관리 기법</title>
			<link>http://maclove.pe.kr/32</link>
			<description>&lt;h4&gt;메모리 관리&lt;/h4&gt;  &lt;p&gt;많은 개발자들이 Objective-C 의 메모리 관리를 어렵게 느낀다. Objective-C 에서 객체는 참조 카운터를 이용해서 관리되기 때문에, 참조 카운터를 증가 시키고 감소하는 작업이 프로그래머의 몫이 된다. 여기서 혼돈이 오는 것이다. 참조 카운터를 증가시키는 함수는 retain 이다. 반대로 참조 카운터를 감소시키는 함수는 release와 autorelease 이다. 하지만 문제는 이미 만들어진 객체의 메서드가 내부에서 retain 을 몇번 부르는지를 별도로 알아낼 방법이 없다는 것이다. 다음을 보자.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;UIImageView* imgView = [[UIImageView alloc] init];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;이 코드에서 UIImageView 는 retain 내부에서 한번 호출해서 객체를 반환해 준다. 그렇기 때문에 우리는 더이상 필요하지 않을때,&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;[imgView release];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;를 호출해야 한다. 하지만 다음을 보자.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;NSString* output = [NSString stringWithFormat:@”My name : %@”, name];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;이 코드는 NSString의 stringWithFormat 클래스 메서드를 이용해서 객체를 생성하는 코드이다. 이 녀석은 retain 이 아닌 autorelease 를 호출해서 객체를 반환한다. 이렇게 어떤 메서드는 객체를 retain 해서 반환하고, 또 어떤 객체는 autorelease 로 반환하기 때문에 혼돈이 온다. &lt;/p&gt;
  &lt;p&gt;참조 카운트를 관리하는 함수는 다음과 같다. &lt;/p&gt;
  &lt;p&gt;• retain   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 참조 카운트를 1 증가 시킨다.    &lt;br /&gt;
• release    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 참조 카운트를 1 감소시킨다. 참조 카운트가 0이 되면 메모리가 해제된다.    &lt;br /&gt;
• autorelease    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp; 객체를 오토릴리즈 풀에 등록한다. 나중에 오토릴리즈 풀이 제거될때 release 를 호출해 준다. &lt;/p&gt;
  &lt;p&gt;객체의 참조를 관리하는 것은 위 3개의 메서드가 전부이지만, 문제는 클래스 내부 구현에서 위 함수들을 호출하는 지를 모른다는 점이다. 하지만 법칙이 있다. 애플이 작성한 모든 클래스는 정해진 규칙을 철저하게 따르기 때문에 이 법칙들만 알아두면 더 이상 햇갈릴 일이 없다.&lt;/p&gt;
  &lt;h4&gt;* 규칙1 : alloc, copy, new를 이름에 포함하는 메서드는 retain 된 객체를 반환한다.&lt;/h4&gt;  &lt;p&gt;alloc, copy, new 가 메서드 이름에 포함되어 있다면, 그 때 반환되는 객체는 retain 되어 있다. 그래서 반드시 release 를 직접 호출해야 한다.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;01: queue = [[NSOperationQueue alloc] init];       &lt;br /&gt;
&lt;/b&gt;02: // 작업      &lt;br /&gt;
&lt;b&gt;03: [queue release];       &lt;br /&gt;
&lt;/b&gt;04:      &lt;br /&gt;
&lt;b&gt;05: copyedObj = [name copy];       &lt;br /&gt;
&lt;/b&gt;06: // 작업      &lt;br /&gt;
&lt;b&gt;07: [copyedObj release];&lt;/b&gt;&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;h4&gt;* 규칙2 : 결자해지&lt;/h4&gt;  &lt;p&gt;만약 자신이 retain 을 호출했다면, 책임지고 release 또는 autorelease 를 호출해 주자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: [objA retain];     &lt;br /&gt;
02: // 작업      &lt;br /&gt;
03: [objA release];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;반드시 자신이 호출한 retain 에 대해서 release/autorelease 짝을 맞추도록 하자. &lt;/p&gt;
  &lt;h4&gt;* 규칙3: 클래스 메서드가 객체를 생성해 줄때는 autorelease 객체를 반환한다.&lt;/h4&gt;  &lt;p&gt;클래스 메서드로 객체를 생성하는 경우 즉 stringWithFormat 과 같은 클래스 메서드가 반환하는 객체는 모두 autorelease 객체이다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;01: img = [UIImage imageNamed:@&quot;test.png&quot;];       &lt;br /&gt;
&lt;/b&gt;02: imgView = [[UIImageView alloc] initWithImage:];      &lt;br /&gt;
03: // 작업      &lt;br /&gt;
04: [imgView release];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;코드 1행의 imageNamed 메서드 처럼 클래스 메서드를 이용해서 객체를 생성하는 경우 그 객체는 autorelease 가 호출된 객체이다. 그렇기 때문에 별도로 release 를 호출하지 않아도 오토릴리즈 풀이 자동으로 release 를 호출해 준다. 하지만 이 객체에 retain 을 호출 했다면 호출한 만큼의 release 를 호출 해야한다. &lt;/p&gt;
  &lt;h4&gt;* 규칙4: 포함 객체는 추가된 객체를 retain 하고, 항목을 제거할 때 release 한다.&lt;/h4&gt;  &lt;p&gt;NSArray,NSDictionay 등의 포함 객체는 항목으로 추가되는 객체에 대해서 retain 을 한번 호출한다. 그리고 객체가 포함객체에서 제거될때 release 를 호출해 준다.&lt;/p&gt;
  &lt;p&gt;13.9.5 규칙5: retain 속성을 갖는 접근자&lt;/p&gt;
  &lt;p&gt;프로퍼티를 구성할때 @property (retain) ... 과 같이 retain 속성을 지정하면 이 프로퍼티에 객체를 설정하면 retain 메서드를 호출한다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: myImage = [[UIImage alloc] init]; // myImage 에 retain –&amp;gt; 1     &lt;br /&gt;
02: self.userImage = myImage; // myImage 에 retain –&amp;gt; 2      &lt;br /&gt;
03: [myImage release]; // myImage 에 release –&amp;gt; 1      &lt;br /&gt;
04: // ...      &lt;br /&gt;
05: self.userImage = myImage2; // 예전 myImage 에 release -&amp;gt; 0 해제&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;이와 같이 객체를 설정하는 접근자는 일반적으로 그 객체에 대해서 retain 을 호출한다. 그리고 만약 다른 객체를 재설정하면, 예전 객체에 release 를 호출한다. 위 예제의 3행에서 release 를 호출한 이유를 이해할 것이다. &lt;/p&gt;
  &lt;h4&gt;*규칙5: 메서드가 반환하는 객체는 autorelease &lt;/h4&gt;  &lt;p&gt;메서드가 객체를 반환한다면 autorelease 된 객체를 반환하는 것이 좋다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: -(NSString*) findTopPlayer {     &lt;br /&gt;
02: NSString *ret = [[top objectAtIndex:0] copy];      &lt;br /&gt;
&lt;b&gt;03: [ret autorelease];       &lt;br /&gt;
&lt;/b&gt;04: return ret;      &lt;br /&gt;
05: }&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=3466711&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<category>autorelease</category>
			<category>Release</category>
			<category>retain</category>
			<category>메모리관리</category>
			<category>아이폰</category>
			<category>아이폰SDK</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/32</guid>
			<comments>http://maclove.pe.kr/32#entry32comment</comments>
			<pubDate>Tue, 16 Jun 2009 13:18:36 +0900</pubDate>
		</item>
		<item>
			<title>쓰레드 기초</title>
			<link>http://maclove.pe.kr/30</link>
			<description>&lt;p&gt;아아폰에서 모든 어플리케이션은 기본적으로 하나의 쓰레드를 가지고 있다. 이 쓰레드는 UIApplication 클래스에서 자동으로 생성하며 프로그램의 메인 룹이 이곳에서 실행된다. 하지만 어떤 작업이 그 작업을 마치는데 너무 오랜 시간이 걸린다면 그 작업을 새로은 쓰레드로 만들어서 실행하는 것이 좋다. 메인 쓰레드는 기본적으로 사용자와 상호 작용을 해야하는데, 어떤 작업이 시간을 너무 소모하면 사용자가 프로그램이 멈춘 것으로 오해 할 수 있다. &lt;/p&gt;
  &lt;p&gt;아이폰 OS 에서 쓰레드는 리눅스와 유닉스에서 지원하는 POSIX 쓰레드를 그대로 이용할 수 있다. 또한 코코아 터치 프레임워크 자체에서도 NSThread 라는 클래스를 이용해서 쓰레드를 좀 더 편리하게 생성할 수 있게 해 준다. 만약 이미 POSIX 로 작성된 코드를 가지고 있는 경우라면 새롭게 NSThread로 포팅하지 않고 바로 사용하는 것이 좋을 것이다. &lt;/p&gt;
  &lt;p&gt;이제 부터 코코아 터치가 제공하는 쓰레드 기능을 하나씩 구현해 보도록하자. POSIX 쓰레드는 이책에서는 따로 설명하지 않겠다.&lt;/p&gt;
  &lt;h4&gt;* 쓰레드 생성하기&lt;/h4&gt;  &lt;p&gt;먼저 NSThread 객체를 이용해서 쓰레드를 생성해 보자. 다음은 NSThread 의 클래스 메서드를 이용하는 방법이다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: [NSThread      &lt;br /&gt;
02: detachNewThreadSelector:@selector(threadFunc:)       &lt;br /&gt;
03: toTarget:self       &lt;br /&gt;
04: withObject:nil      &lt;br /&gt;
05: ]; &lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;detachNewThreadSelector 메서드는 지정한 객체의 메서드를 이용해서 새로운 쓰레드를 생성해 준다. 위 코드에서 생성된 쓰레드는 바로 실행을 시작한다. 다음은 쓰레드를 생성하는 다른 방법이다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: NSThread* myThread = [[NSThread alloc]      &lt;br /&gt;
02: initWithTarget:self       &lt;br /&gt;
03: selector:@selector(threadFunc:)       &lt;br /&gt;
04: object:nil      &lt;br /&gt;
05: ];       &lt;br /&gt;
06: [myThread start]; &lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;위 코드는 alloc, init 으로 생성을 먼저 한 후에 실행은 나중에 start 메서드를 호출할때 하도록 할 수 있다. &lt;/p&gt;
  &lt;p&gt;마지막으로 NSObject 를 이용해서 쓰레드를 생성하는 방법도 있다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: [objectA      &lt;br /&gt;
02: performSelectorInBackground:@selector(doSomething)       &lt;br /&gt;
03: withObject:myName];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;h4&gt;&amp;nbsp;&lt;/h4&gt;  &lt;h4&gt;* 쓰레드 메서드 구현하기&lt;/h4&gt;  &lt;p&gt;쓰레드에서 실행될 메서드는 다음과 같이 정의한다. 전달되는 인자는 쓰레드를 생성할 때 설정했던 object 가 넘어온다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: - (void)doSomething:(NSString*)name {     &lt;br /&gt;
02: NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];      &lt;br /&gt;
03:      &lt;br /&gt;
04: // 작업      &lt;br /&gt;
05:      &lt;br /&gt;
06: [pool release];      &lt;br /&gt;
07: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;오토릴리즈(autoreleae) 풀은 객체 중에서 autorelease 메서드를 호출해서 생성된 객체들을 관리한다. 오토릴리즈 풀을 생성하면 그 이후로 생성되는 모든 autorelease 객체를 마지막에 생성된 오토릴리즈 풀 객체가 관리한다. 그리고 오토릴리즈 풀을 해제(release) 하면 이때 모든 오토릴리즈 객체도 같이 해제된다. &lt;/p&gt;
  &lt;p&gt;모든 쓰레드는 자신만의 오토릴리즈 스택을 관리하기 때문에, 쓰레드를 생성한 후 반드시 오토릴리즈 풀을 생성해야 한다. &lt;/p&gt;
  &lt;h4&gt;* 런 루프&lt;/h4&gt;  &lt;p&gt;런 루프는 쓰레드가 외부와 통신하기 위해서 존재한다. 런 루프는 자신(쓰레드)에게 전달된 이벤트가 있는지를 검사하고, 만약 존재하는 경우 알맞은 메서드를 호출해 준다. 런 루프가 처리하는 이벤트는 크게 두가지가 있다. &lt;/p&gt;
  &lt;p&gt;• 입력 소스   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; • performSelector:: 계열의 메서드를 호출해서 지정한 셀렉터를 실행시켜달라는 외부의 요청.    &lt;br /&gt;
• 타이머    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; • 타이머를 생성하면 그 타이머는 코드가 실행된 쓰레드의 런 루프에 소속된다. 런 루프는 타이머중에서 지정한 시간이 경과한 것들을 검사해서 메서드를 호출해 준다.&lt;/p&gt;
  &lt;p&gt;다음 코드를 보자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: if ( tapCount == 2) {     &lt;br /&gt;
02: // 5개 모두 보여주자.       &lt;br /&gt;
&lt;b&gt;03: [self performSelector:@selector(showAllCircles) withObject:nil afterDelay:0.3];       &lt;br /&gt;
&lt;/b&gt;04: NSLog(@&quot;Scheduled&quot;);      &lt;br /&gt;
05: }       &lt;br /&gt;
06: ... 생략 ...      &lt;br /&gt;
07: if (tapCount &amp;gt; 2) {      &lt;br /&gt;
&lt;b&gt;08: [UIView cancelPreviousPerformRequestsWithTarget:self];       &lt;br /&gt;
&lt;/b&gt;09: NSLog(@&quot;Cancelled&quot;);      &lt;br /&gt;
10: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;이때 이미 쓰레드에 입력 소스를 추가하는 작업을 구현한 것이다. performSelector:withObject:afterDelay 메서드를 호출하면 현재 쓰레드의 런 루프에 입력 소스로써 등록이 된다. 그리고 런 루프가 실행될 때 자신에게 등록된 모든 입력 소스를 검사해서 조건이 만족되는 (여기서는 0.3초 경과) 경우 해당 메서드를 호출(예제에서는 showAllCircles)해 주는 것이다. &lt;/p&gt;
  &lt;p&gt;만약 스스로 쓰레드를 생성했다면 런 루프가 자동으로 실행되지는 않는다. 그래서 자신의 쓰레드 함수에서 직접 런 루프를 실행시켜서 주기적으로 외부의 이벤트에 대응할 수 있도록 만들어야 한다. 하지만 쓰레드가 하나의 작업만 수행하고 종료되는 경우라면 반드시 필요하지는 않다. 하지만 무한 루프를 돌면서 지속적으로 상호작용이 필요한 쓰레드라면 반드시 런 루프를 실행해 주도록 하자. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: - (void)doSomething:(NSString*)name {     &lt;br /&gt;
02: NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];      &lt;br /&gt;
03:      &lt;br /&gt;
&lt;b&gt;04: NSRunLoop* myRunLoop = [NSRunLoop currentRunLoop];       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;05: BOOL stop=NO;       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;06:       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;07: while(!stop) {       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;08: // &lt;/b&gt;&lt;b&gt;작업       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;09: [myRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;10: }       &lt;br /&gt;
&lt;/b&gt;11:      &lt;br /&gt;
12: [pool release];      &lt;br /&gt;
13: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;4행에서 현재 쓰레드의 런 루프를 얻어온다. 그리고 9행에서 런 루프를 실행시킨다. 이 때 runIntilDate 메서드는 지정한 시간까지 런 루프를 실행시켜 준다. 하지만 런 루프가 아무런 할 일이 없다면 바로 종료된다. &lt;/p&gt;
  &lt;h4&gt;* 쓰레드의 대안&lt;/h4&gt;  &lt;p&gt;쓰레드를 생성하는 코드를 직접 작성하지 않고도 간접적으로 쓰레드를 생성하게 할 수 있다. 이때 NSInvocationOperation 객체를 이용한다.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: NSInvocationOperation* op =      &lt;br /&gt;
02: [[[NSInvocationOperation alloc]       &lt;br /&gt;
03: initWithTarget:self      &lt;br /&gt;
04: selector:@selector(myMethod:) object:data] autorelease];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;위 코드는 NSInvocationOperation 객체를 생성해 준다. 다음으로 할 일은 동작을 시작시키는 일이다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: NSOperationQueue* queue = [[NSOperationQueue alloc] init];     &lt;br /&gt;
02: [queue setMaxConcurrentOperationCount:1];      &lt;br /&gt;
&lt;b&gt;03: [queue addOperation:op];&lt;/b&gt;&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;위 코드와 같이 NSOperatonQueue 객체를 생성하고 그 객체에 작업을 등록해 주면 된다.&lt;/p&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/30</guid>
			<comments>http://maclove.pe.kr/30#entry30comment</comments>
			<pubDate>Mon, 15 Jun 2009 02:18:00 +0900</pubDate>
		</item>
		<item>
			<title>키-값 코딩과 키-값 감시(Key-Value Coding/Key-Value Observing)</title>
			<link>http://maclove.pe.kr/29</link>
			<description>&lt;h3&gt;* 키,값 코딩 (Key-Value Coding)&lt;/h3&gt;  &lt;p&gt;키 값 코딩은 NSObject 를 상속받는 모든 객체가 지원한다. 이는 NSKeyValueCoding 라는 프로토콜을 NSObject 가 따르고 있기 때문이다. 키 값 코딩은 무엇일까 ?&lt;/p&gt;
  &lt;p&gt;키 값 코딩 기술은 객체의 속성을 문자열을 통해서 간접적으로 접근하기 위한 것이다. 즉 객체의 속성에 접근하기 위해서 직접 객체의 접근자를 호출할 것이 아니라 속성의 이름을 인자로 전달해서 그 값에 접근하는 것이다. 객체에 접근할 때 내부적으로 접근자를 이용하게 된다. 만약 접근자가 존재하지 않으면 직접 멤버 변수에 접근한다. 다음 예제 코드를 보자.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: - (void)applicationDidFinishLaunching:(UIApplication *)application {     &lt;br /&gt;
02:      &lt;br /&gt;
03: imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@&quot;test.png&quot;]];      &lt;br /&gt;
04: [window addSubview:imgView];      &lt;br /&gt;
05: [window makeKeyAndVisible];      &lt;br /&gt;
06:      &lt;br /&gt;
&lt;b&gt;07: //imgView.frame = CGRectMake(0,0,320,480);       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;08: [imgView setValue:[NSValue valueWithCGRect:CGRectMake(0,0,320,480)] forKey:@&quot;frame&quot;];       &lt;br /&gt;
&lt;/b&gt;09:      &lt;br /&gt;
10: //[imgView setAlpha:0.5];      &lt;br /&gt;
11: [imgView setValue:[NSNumber numberWithFloat:0.5] forKey:@&quot;alpha&quot;];      &lt;br /&gt;
12:      &lt;br /&gt;
&lt;b&gt;13: //imgView.superview.backgroundColor = [UIColor yellowColor];        &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;14: [imgView setValue:[UIColor yellowColor] forKeyPath:@&quot;superview.backgroundColor&quot;];       &lt;br /&gt;
&lt;/b&gt;15:&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;먼저 7,8 행을 보자. imgView 는 이미지 뷰의 객체이다. 뷰의 frame 속성을 변경하는 기존 방법은 7행과 같이 점 표현법으로 접근하거나, [imgView setFrame:] 과 같이 접근자를 호출하는 것이었다. 하지만 예제는 setValue:forKey 메서드를 이용해서 문자열로 속성값에 접근한다. 이러한 접근법을 키-값 코딩이라고 한다.&lt;/p&gt;
  &lt;p&gt;13,14행은 키-값에 대해서 경로를 사용한 것이다. 키-값 경로는 접근하려는 속성에 대해서 점 표현법 문자열을 쓰게 되면, 그 문자열을 분석해서 재귀적으로 키-값 코딩을 적용하는 것이다. &lt;/p&gt;
  &lt;p&gt;14행을 보면 imgView 의 superview 속성에 키-값 코딩으로 접근하고, 그 superview 객체에서 다시 키-값 코딩으로 backgroundColor 속성에 접근한다. 이와 같이 키-값 코딩과 키-값 경로를 이용한 방법은 점 표현법, 접근자와 밀접한 관계를 갖는다. &lt;/p&gt;
  &lt;p&gt;값을 읽는 방법도 마찬가지로 간단하다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;16: // 값 읽기     &lt;br /&gt;
&lt;b&gt;17: UIImage* image = [imgView valueForKey:@&quot;image&quot;];       &lt;br /&gt;
&lt;/b&gt;&lt;b&gt;18: UIColor* superBack = [imgView valueForKeyPath:@&quot;superview.backgroundColor&quot;];       &lt;br /&gt;
&lt;/b&gt;19: NSLog(@&quot;%@ &lt;a href=&quot;mailto:%@%22,image,superBack&quot;&gt;%@&quot;,image,superBack&lt;/a&gt;);      &lt;br /&gt;
20: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;코드의 17,18행에서 보는 것과 같이 valueForKey, valueForKeyPath 메서드를 이용해서 접근한다. 점 표현법을 사용하는 문자열로 값에 접근할 때는 반드시 valueForKeyPath 를 이용하는 것에 주의하자.&lt;/p&gt;
  &lt;p&gt;그렇다면 NSObject 가 키-값을 검색하는 방식은 어떻게 될까 ? NSObject 는 키-값 코딩으로 접근하는 메서드가 호출되면 그 키와 일치하는 이름의 접근자를 검색한다. 만약 접근자가 존재하지 않으면 직접 객체에서 일치하는 멤버 변수를 검색한다. &lt;/p&gt;
  &lt;h4&gt;* 예외 상황&lt;/h4&gt;  &lt;p&gt;키-값 코딩으로 값을 읽으려고 할 때 키 값이 존재하지 않는 경우가 있다. 이럴때는 객체의 valueForUnderfinedKey 메서드가 호출된다. 이 메서드는 기본적으로 NSUndefinedKeyException 예외를 발생시킨다. 만약 존재하지 않는 키를 접근하려고 할 때 자신만의 동작을 정의하고 싶다면 valueForUndefinedKey 메서드를 재정의 하면 된다.&lt;/p&gt;
  &lt;p&gt;마찬가지로 값을 쓰는 경우도 해당 키가 존재하지 않는다면 setValue:forUndefinedKey: 메서드가 호출된다. 이 메서드도 기본 구현은 NSUndefinedKeyException 예외를 발생시킨다. 예외 대신에 별도의 작업을 진행하려면 setValue:forUndefinedKey 를 재정의 하자.&lt;/p&gt;
  &lt;h4&gt;* 키-값 감시 (Key-Value Observing)&lt;/h4&gt;  &lt;p&gt;키-값 감시 기능은 객체의 프로퍼티가 변경되는 상황을 감시할 수 있다. 통보와 비슷하게 자신이 감시하고 싶은 키 경로를 지정해서 옵져버로 등록해 두면, 해당 키 경로의 값이 수정되었을 때 메서드를 호출해 준다. 키 경로를 감시하는 코드는 다음과 같다.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: [objectA addObserver:self      &lt;br /&gt;
02: forKeyPath:@&quot;enable&quot;       &lt;br /&gt;
03: options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld       &lt;br /&gt;
04: context:NULL];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;위 코드는 objectA 의 enable 이라는 프로퍼티 (키 경로)가 변경될 때를 감시하기 위한 것이다. 감시하는 객체는 self 이다. 그리고 3행에서는 옵션을 지정하게 되는데, 값이 변경되었다는 메서드가 호출될 때 딕셔너리로 전달될 정보를 결정한다. 마지막 4행의 context 는 값이 변경되었다는 메서드를 호출할때 같이 전달된다. 추가 정보를 인자로 전달할 때 사용한다. &lt;/p&gt;
  &lt;p&gt;위와 같이 코드를 수행하고, 코드의 어디선가 아래와 같이 속성을 변경한다고 하자.&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;[test setValue:[NSNumber numberWithBool:YES] forKey:@&quot;enable&quot;];&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;또는&lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;test.enable = YES;&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;이렇게 키-값 코딩 이나 점 표현법을 이용해서 객체의 속성값을 변경하면 그 속성을 감시하고 있는 객체들의 다음 메서드를 호출해 준다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: - (void)observeValueForKeyPath:(NSString *)keyPath     &lt;br /&gt;
02: ofObject:(id)object      &lt;br /&gt;
03: change:(NSDictionary *)change      &lt;br /&gt;
04: context:(void *)context      &lt;br /&gt;
05: {      &lt;br /&gt;
06: if ([keyPath isEqual:@&quot;enable&quot;]) {      &lt;br /&gt;
07: for (NSString* val in [change allKeys]) {      &lt;br /&gt;
08: NSLog(@&quot;%@ : %@&quot;,val,[change objectForKey:val]);      &lt;br /&gt;
09: }      &lt;br /&gt;
10: }      &lt;br /&gt;
11: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;전달되는 인자를 보자. 1행은 키 경로가 전달된다. 예제의 경우 “enable” 이 된다. 2행은 값이 변경된 객체가 전달된다. 그리고 4행은 감시자를 등록할 때 지정했던 context 값이 그대로 넘어온다. 이제 3행을 보자. 3행은 변경된 값에 대한 정보를 딕셔너리 형태로 담고 있다. 이 딕셔너리에 포함되는 정보는 다음과 같다.&lt;/p&gt;
  &lt;p&gt;• NSKeyValueChangeKindKey   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; • 값이 변경된 형태를 알려준다.    &lt;br /&gt;
• NSKeyValueChangeNewKey    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; • 새로운 값    &lt;br /&gt;
• NSKeyValueChangeOldKey    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; • 변경되기 전의 값&lt;/p&gt;
  &lt;p&gt;마지막으로 키-값 감시를 더이상 하지 않을 때는 제거해야 한다. 다음과 같이 간단하게 제거할 수 있다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01: - (void)unregisterForChangeNotification     &lt;br /&gt;
02: {      &lt;br /&gt;
03: [objectA removeObserver:self forKeyPath:@&quot;enable&quot;];      &lt;br /&gt;
04: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;h4&gt;* 수동으로 알리기&lt;/h4&gt;  &lt;p&gt;지금까지 배운 것처럼, 어떤 속성에 대해서 접근자(점 표현법이나 키-값 코딩) 를 이용해서 값을 변경하면 그 내용이 자동으로 감시자에게 통보된다. 하지만 객체의 내부에서 수동으로 통보할 수도 있다. &lt;/p&gt;
  &lt;blockquote&gt;   &lt;p&gt;01:- (void) foo {     &lt;br /&gt;
&lt;b&gt;02: [self willChangeValueForKey:@&quot;enable&quot;];       &lt;br /&gt;
&lt;/b&gt;03: _enable = YES;      &lt;br /&gt;
04: ...      &lt;br /&gt;
&lt;b&gt;05: [self didChangeValueForKey:@&quot;enable&quot;];       &lt;br /&gt;
&lt;/b&gt;06: }&lt;/p&gt;
 &lt;/blockquote&gt;  &lt;p&gt;2행과 5행에서 처럼 값이 곧 변경될것이다, 값이 변경되었다는 것을 알리기 위한 메서드를 호출해 주면 된다.&lt;/p&gt;&lt;div class=&quot;blogger-news-widget&quot; style=&quot;width: 100%; text-align: center&quot;&gt;
		  					&lt;embed src=&quot;http://api.v.daum.net/static/recombox1.swf&quot; quality=&quot;high&quot; flashvars=&quot;nid=3392851&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;false&quot; bgcolor=&quot;#ffffff&quot; width=&quot;400&quot; height=&quot;80&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
						&lt;/div&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=&quot;_blank&quot;&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>개발 &amp; SDK</category>
			<category>KVO KVC</category>
			<author>dj kang</author>
			<guid>http://maclove.pe.kr/29</guid>
			<comments>http://maclove.pe.kr/29#entry29comment</comments>
			<pubDate>Fri, 12 Jun 2009 01:22:00 +0900</pubDate>
		</item>
	</channel>
</rss>

