<?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>Macfeteria &#187; NSNumber</title>
	<atom:link href="http://www.macfeteria.com/blog/tag/nsnumber/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.macfeteria.com</link>
	<description>All About Mac and iPhone Programming</description>
	<lastBuildDate>Tue, 09 Aug 2011 04:34:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Foundation Framework I &#8211; Number</title>
		<link>http://www.macfeteria.com/blog/2008/03/14/foundation-framework-i/</link>
		<comments>http://www.macfeteria.com/blog/2008/03/14/foundation-framework-i/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 15:35:37 +0000</pubDate>
		<dc:creator>[Ter]</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[foundation]]></category>
		<category><![CDATA[NSNumber]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://maccafe.wordpress.com/?p=23</guid>
		<description><![CDATA[หลังจากเขียน basic &#8211; objective-c ได้สักพัก คิดว่าอาจจะไม่มันส์เท่าไหร่ วันนี้ลองมาเขียนเกี่ยวกับ Foundation Framework มั่งจะดีกว่า เพราะยังไงก็ต้องได้ใช้ class เหล่านี้ในการ พัฒนาโปรแกรม สำหรับ mac และแน่นอนว่า สำหรับ iPhone ด้วย สำหรับ อย่างแรกที่จะพาลองเขียนกัน ก็คือการใช้งาน class ที่ชื่อว่า NSNumber สำหรับ class นี้จะเกี่ยวข้องกับเลขทั้งหมด เพราะว่า int ,float , longs พวกนี้เป็น basic data type มันไม่ใช่ Object และในเมื่อมันไม่ใช่ Object ก็แน่นอนว่า เราไม่สามารถส่ง message (เรียก function) ไปหามันได้ และอีกอย่างก็คือว่าจะมี class บางจำพวกที่ต้องการเก็บ เป็น Object ไม่ใช่ basic [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากเขียน basic &#8211; objective-c ได้สักพัก คิดว่าอาจจะไม่มันส์เท่าไหร่ วันนี้ลองมาเขียนเกี่ยวกับ Foundation Framework มั่งจะดีกว่า เพราะยังไงก็ต้องได้ใช้ class เหล่านี้ในการ พัฒนาโปรแกรม สำหรับ mac และแน่นอนว่า สำหรับ iPhone ด้วย</p>
<p>สำหรับ อย่างแรกที่จะพาลองเขียนกัน ก็คือการใช้งาน class ที่ชื่อว่า NSNumber สำหรับ class นี้จะเกี่ยวข้องกับเลขทั้งหมด เพราะว่า int ,float , longs พวกนี้เป็น basic data type มันไม่ใช่ Object และในเมื่อมันไม่ใช่ Object ก็แน่นอนว่า เราไม่สามารถส่ง message (เรียก function) ไปหามันได้ และอีกอย่างก็คือว่าจะมี class บางจำพวกที่ต้องการเก็บ เป็น Object ไม่ใช่ basic data type อย่างเช่นว่า NSArray เป็นต้นโอเคงั้นก็ดู code ตัวอย่างก่อนเลยแล้วกันว่ามันทำอะไรได้บ้าง</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #6e371a;">#import &lt;Foundation/NSObject.h&gt;</span>
<span style="color: #6e371a;">#import &lt;Foundation/NSAutoreleasePool.h&gt;</span>
<span style="color: #6e371a;">#import &lt;Foundation/NSValue.h&gt;</span>
<span style="color: #6e371a;">#import &lt;Foundation/NSString.h&gt;</span>
&nbsp;
<span style="color: #a61390;">int</span> main<span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> argc, <span style="color: #a61390;">char</span> <span style="color: #002200;">*</span>argv<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>
<span style="color: #002200;">&#123;</span>
	<span style="color: #400080;">NSAutoreleasePool</span> <span style="color: #002200;">*</span>pool <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSAutoreleasePool</span> alloc<span style="color: #002200;">&#93;</span>init<span style="color: #002200;">&#93;</span>;
	<span style="color: #400080;">NSNumber</span> <span style="color: #002200;">*</span>doubleNumber , <span style="color: #002200;">*</span>floatNumber , <span style="color: #002200;">*</span>intNumber;
&nbsp;
	intNumber <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSNumber</span> numberWithInt<span style="color: #002200;">:</span><span style="color: #2400d9;">200</span><span style="color: #002200;">&#93;</span>;
	<span style="color: #a61390;">printf</span><span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;%d<span style="color: #2400d9;">\n</span>&quot;</span>,<span style="color: #002200;">&#91;</span>intNumber intValue<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	floatNumber <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSNumber</span> numberWithFloat<span style="color: #002200;">:</span><span style="color: #2400d9;">500.25</span><span style="color: #002200;">&#93;</span>;
	<span style="color: #a61390;">printf</span><span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;%f<span style="color: #2400d9;">\n</span>&quot;</span>,<span style="color: #002200;">&#91;</span>floatNumber floatValue<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	doubleNumber <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSNumber</span> numberWithDouble<span style="color: #002200;">:</span>12345e<span style="color: #002200;">+</span>15<span style="color: #002200;">&#93;</span>;
	<span style="color: #a61390;">printf</span><span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;%lf<span style="color: #2400d9;">\n</span>&quot;</span>,<span style="color: #002200;">&#91;</span>doubleNumber doubleValue<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> <span style="color: #002200;">&#91;</span>intNumber isEqualToNumber<span style="color: #002200;">:</span>floatNumber<span style="color: #002200;">&#93;</span> <span style="color: #002200;">==</span> <span style="color: #a61390;">YES</span><span style="color: #002200;">&#41;</span>
		<span style="color: #a61390;">printf</span><span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;Numbers are Equal&quot;</span><span style="color: #002200;">&#41;</span>;
	<span style="color: #a61390;">else</span>
		<span style="color: #a61390;">printf</span><span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;Numbers are not Equal&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #002200;">&#91;</span>pool release<span style="color: #002200;">&#93;</span>;
	<span style="color: #a61390;">return</span> <span style="color: #2400d9;">0</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>ก็มาเริ่มที่ header กันก่อนเลย เราทำการ import ในส่วนของ Foundation Framework เข้ามาหลายตัว ส่วนที่สำคัญในตัวอย่างข้างบนก็คือ</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSAutoreleasePool</span> <span style="color: #002200;">*</span>pool <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSAutoreleasePool</span> alloc<span style="color: #002200;">&#93;</span>init<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>ตรงส่วนนี้เป็นการจองหน่อยความจำให้กับ autoreleasepool เหตุผลก็เพราะว่าในถ้าโปรแกรมเราเรียกใช้ foundation class ทั้งหลายเราจำเป็นต้องมี autoreleaspool เนื่องจากว่ามันช่วยอำนวยความสะดวกในการจัดการ memory ของระบบ คือหลังจากที่เรามี autoreleasepool แล้วทุก object จะถูกส่งเข้ามายัง pool ที่เราสร้างขึ้นเพื่อที่ว่าตอนปิดโปรแกรม มันจะได้มาดูว่าใน pool มีอะไรอยู่และจะทำการ release object ใน pool เพื่อคืนหน่วยความจำ และตอนก่อนปิดโปรแกรมก็อย่าลืมเรียก release </p>
<p>เอาละ  เราได้ประกาศตัวแปร มาหลายตัวเป็นต้นว่า doubleNumber แล้วก็ทำการใส่ค่าให้มันโดยการเรียก numberWithDouble แล้วก็ลองแสดงค่าผลลัพธ์ของแต่ละตัวแปรออกมา ก็เป็นอันจบ จะมีที่แปลกๆหน่อยก็คงจะเป็น isEqualToNumber สำหรับ method นี้ก็เป็นการเปรียบเทียบว่าเลขสองตัวนี้มันเท่ากันหรือไม่</p>
<p>คิดว่า code ไม่น่ายากน่ะ ถ้าเอาไป compile  แล้ว run ดูก็จะได้ผลลัพธ์ แบบนี้</p>
<p>200<br />
500.250000<br />
12345000000000000000.000000<br />
Numbers are not Equal</p>
<p>หลายคนอาจจะบอกว่าทำไมไม่ประกาศเป็น int , float ซะก็น่าจะใช้ได้เหมือนกัน จริงๆก็ใช้ได้ครับ แต่ว่าขอเน้นย้ำว่า NSNumber มันเป็น class น่ะ ไม่ใช่ basic data type จุดประสงค์ของผมก็คือ ต้องการประกาศ object แล้วเดี๋ยวเราจะได้ใช้ประโยชน์ร่วมกับ Foundation class  ตัวอื่นๆอีก</p>
<p>สำหรับตัวอย่าง Source Code ก็โหลดได้ที่นี่ครับ<br />
<a href="http://www.macfeteria.com/wp-content/uploads/2008/07/foundation_framwork_1.zip">Download Foundation Framework I (NSNumber) Source Files</a></p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/basic' rel='tag' target='_self'>basic</a>, <a class='technorati-link' href='http://technorati.com/tag/foundation' rel='tag' target='_self'>foundation</a>, <a class='technorati-link' href='http://technorati.com/tag/NSNumber' rel='tag' target='_self'>NSNumber</a>, <a class='technorati-link' href='http://technorati.com/tag/objective-c' rel='tag' target='_self'>objective-c</a>, <a class='technorati-link' href='http://technorati.com/tag/programming' rel='tag' target='_self'>programming</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://www.macfeteria.com/blog/2008/03/14/foundation-framework-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

