<?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>cahier lukhnos (nota lumina)</title>
	<atom:link href="http://lukhnos.org/blog/zh/feed" rel="self" type="application/rss+xml" />
	<link>http://lukhnos.org/blog/zh</link>
	<description>"Festina lente"</description>
	<lastBuildDate>Tue, 30 Jun 2009 20:22:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>碧娜．鮑許 (Pina Bausch) 逝世, 1940-2009</title>
		<link>http://lukhnos.org/blog/zh/archives/940</link>
		<comments>http://lukhnos.org/blog/zh/archives/940#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:22:10 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[tekhnologia 技術或者藝術]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/archives/940</guid>
		<description><![CDATA[烏帕塔舞蹈劇場的消息:
Heute morgen starb Pina Bausch, die Tänzerin und Choreographin des Wuppertaler Tanztheaters. Ein unerwarteter schneller Tod ergriff sie fünf Tage nach einer Krebsdiagnose. Noch am vorletzten Sonntag stand sie mit ihrer Company im Wuppertaler Opernhaus auf der Bühne.
（烏帕塔舞蹈劇場的舞者及編舞者 Pina Bausch 今天 [2009年6月30日] 過世了。五天前她才剛做完癌症檢查，就這樣意外地匆匆過世。上上星期天，她還與她的舞者們一同站在烏帕塔歌劇院的舞台上。）
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pina-bausch.de/news.htm">烏帕塔舞蹈劇場的消息</a>:</p>
<blockquote><p>Heute morgen starb Pina Bausch, die Tänzerin und Choreographin des Wuppertaler Tanztheaters. Ein unerwarteter schneller Tod ergriff sie fünf Tage nach einer Krebsdiagnose. Noch am vorletzten Sonntag stand sie mit ihrer Company im Wuppertaler Opernhaus auf der Bühne.</p></blockquote>
<p>（烏帕塔舞蹈劇場的舞者及編舞者 Pina Bausch 今天 [2009年6月30日] 過世了。五天前她才剛做完癌症檢查，就這樣意外地匆匆過世。上上星期天，她還與她的舞者們一同站在烏帕塔歌劇院的舞台上。）</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/940/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>意圖</title>
		<link>http://lukhnos.org/blog/zh/archives/938</link>
		<comments>http://lukhnos.org/blog/zh/archives/938#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:38:37 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[tekhnologia 技術或者藝術]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=938</guid>
		<description><![CDATA[看別人的 code 最困難的地方，大概莫過於了解他人的意圖：為什麼你要採取這個路數來走。有些時候 code 很像雕塑，往往留下來的成品，是在揚棄了不必要的部份，或是拋棄了許多路徑之後，才得到的結果。
所以意圖 (intention) 有兩個部分：「為什麼」採取現在的手段，以及「為什麼不」採取其他各種可能存在的手段。
程式教材的文字為什麼往往比 code 要長上數十、甚至數百倍的原因就在這裡。另一方面，這也就是為什麼抄襲跟模仿不容易達到跟原創一樣結果的原因：因為前兩者都只看到了既存的結果，而沒有辦法體現出原創所採取（以及所不採取）路徑所意欲解決的問題──而那些問題很可能因為原創的出現而消失，使得抄襲模仿者甚至無法察覺問題的存在。
]]></description>
			<content:encoded><![CDATA[<p>看別人的 code 最困難的地方，大概莫過於了解他人的意圖：為什麼你要採取這個路數來走。有些時候 code 很像雕塑，往往留下來的成品，是在揚棄了不必要的部份，或是拋棄了許多路徑之後，才得到的結果。</p>
<p>所以意圖 (intention) 有兩個部分：「為什麼」採取現在的手段，以及「為什麼不」採取其他各種可能存在的手段。</p>
<p>程式教材的文字為什麼往往比 code 要長上數十、甚至數百倍的原因就在這裡。另一方面，這也就是為什麼抄襲跟模仿不容易達到跟原創一樣結果的原因：因為前兩者都只看到了既存的結果，而沒有辦法體現出原創所採取（以及所不採取）路徑所意欲解決的問題──而那些問題很可能因為原創的出現而消失，使得抄襲模仿者甚至無法察覺問題的存在。</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/938/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TapExpense 2.2.1</title>
		<link>http://lukhnos.org/blog/zh/archives/936</link>
		<comments>http://lukhnos.org/blog/zh/archives/936#comments</comments>
		<pubDate>Tue, 19 May 2009 03:19:09 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[commerce 工商服務]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=936</guid>
		<description><![CDATA[TapExpense 2.2.1 上週四順利在App Store上架。這個版本修正了兩個會造成報表功能無法使用的情況：

如果您選擇了一段報表日期，但這一段日期沒有任何資料存在
如果您先前曾經刪掉過某個分類 (category)，還有資料使用這個已經不存在的分類，產生報表時正好其中有這樣的資料

上述情況很可能造成 TapExpense 當掉，且無法繼續使用。2.2.1 修正了這個問題。
這次要感謝幾位使用者，他們用了很多時間測試跟確認 2.2 的問題來源，還提供了 crash log 給我們做診斷。先前因為程式的 bug 造成大家的不便，在這裡也要跟大家說聲不好意思！
建議大家升級到 2.2.1 （既有的使用者升級是完全免費的）。
另外 TapExpense 的 Lite 版本目前還在 Apple 那裡審核，希望近期也能順利上架。
附帶一提，TapExpense 從 2.0 開始也有了自己的討論區 ，討論區每個月會自動整理存檔。歡迎大家利用討論區來提出意見和交流。當然，如果有任何的問題或者建議，也歡迎大家發信給 service {小老鼠} lithoglyph {一點} com 讓我們知道。
謝謝！
]]></description>
			<content:encoded><![CDATA[<p><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284938053&amp;mt=8">TapExpense 2.2.1</a> 上週四順利在App Store上架。這個版本修正了兩個會造成報表功能無法使用的情況：</p>
<ol>
<li>如果您選擇了一段報表日期，但這一段日期沒有任何資料存在</li>
<li>如果您先前曾經刪掉過某個分類 (category)，還有資料使用這個已經不存在的分類，產生報表時正好其中有這樣的資料</li>
</ol>
<p>上述情況很可能造成 TapExpense 當掉，且無法繼續使用。2.2.1 修正了這個問題。</p>
<p>這次要感謝幾位使用者，他們用了很多時間測試跟確認 2.2 的問題來源，還提供了 <a href="http://www.anoshkin.net/blog/2008/09/09/iphone-crash-logs/">crash log</a> 給我們做診斷。先前因為程式的 bug 造成大家的不便，在這裡也要跟大家說聲不好意思！</p>
<p>建議大家升級到 2.2.1 （既有的使用者升級是完全免費的）。</p>
<p>另外 TapExpense 的 Lite 版本目前還在 Apple 那裡審核，希望近期也能順利上架。</p>
<p>附帶一提，TapExpense 從 2.0 開始也有了自己的<a href="https://lithoglyph.fogbugz.com/default.asp?tapexpense-zh">討論區</a> ，討論區每個月會自動整理存檔。歡迎大家利用討論區來提出意見和交流。當然，如果有任何的問題或者建議，也歡迎大家發信給 service {小老鼠} lithoglyph {一點} com 讓我們知道。</p>
<p>謝謝！</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/936/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本末倒置</title>
		<link>http://lukhnos.org/blog/zh/archives/927</link>
		<comments>http://lukhnos.org/blog/zh/archives/927#comments</comments>
		<pubDate>Mon, 18 May 2009 04:07:55 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[res publica 公共生活]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=927</guid>
		<description><![CDATA[Update: 〈有味道的廁所〉一文為台大吳聰敏教授所寫，先前誤為張清溪教授所撰，已更正。
2009年5月17台灣版《蘋果日報》的新聞：

環保署長沈世宏今天全程參與一項民間團體辦的廁所清掃活動後表示，今年度列管考核全國1萬7000多所公共廁所，明年將擴大到3萬6000所，並將融合應用今日所學的清掃方法與精神。
美化日本協會推廣清掃廁所影響，台灣美化協會在台灣推動清掃廁所已7年，在今年年度大會系列活動中，發動全國57個分會動員上萬人於今天在全國各地清掃廁所，沈世宏是在台北市葫蘆國小參與清掃廁所。
協會指出，近1000人上午到葫蘆國小，在流程解說、任務分工後，進入廁所各自工作崗位，在小組長與日本顧問協助下認真清掃藏污納垢的馬桶，洗手台、天花板、牆壁、燈管、鏡子也不放過，發揮徹底學習精神。
沈世宏全程參與2小時的清掃過程後，有感而發表示，世界要美麗，要靠每一個人。清掃學習注重細節，體驗凡事徹底，過程處處是學習，讓人成長，完成後更充滿成就感，未來要將這種精神擴散到各鄉里城鎮。

我的舊文〈大老闆們，別再洗廁所了！〉：

有沒有可能設計出「比較不容易髒」的廁所？有沒有不那麼痛苦的廁所清潔法？為什麼大家還在用10元一支的塑膠掃把、拖沒幾次就斷頭的拖把在掃地、拖地？掃地一定得一整班人鬧哄哄地掃，沒有更優雅的輪班分時分工制？所以，親愛的大老闆們，請你們別再掃廁所了！請你們找點別的事情，消耗平日吃太多所屯積的脂肪。掃廁所這件事情，就請動動你們搞cost-down時的精明腦袋，為我們的環境品質做點好事吧！

吳聰敏，〈有味道的廁所〉（粗體字為我所加）：

台灣的學生須打掃校園，其中包括廁所。學校的廁所不乾淨，有味道，原因是廁所是由學生打掃。被分派到的學生只覺得倒楣，並沒有把它打掃乾淨的誘因 [...]
小孩在公立學校上課，家長透過納稅繳了大筆學費。學校要學生掃廁所，這好比是麥當勞或百貨公司的老闆，要求客人清掃顧客以及員工的廁所。而且，員工的廁所必須更乾淨！有人認為，打掃是生活教育的一部分。從這個角度來看，掃廁所的目的應該是希望學生能養成好習慣，回到在家裡也能幫忙整理環境。不過，我很懷疑全台灣到底有多少學生在家裡會幫忙刷馬桶的。我同意生活教育重要，但由實施結果來看，我看不出來掃廁所是有意義的生活教育。更嚴重的是，這個制度可能對某些學生的健康有不好的影響。
廁所問題如何解決？最簡單的答案是廁所清潔工作外包，不要再由學生來清掃。這樣會讓學校的廁所乾淨一些。但我相信清潔工作外包之後，老師的廁所仍然會比學生的乾淨。我小孩所上的民間經營的安親班，學生與老師使用同一廁所，同樣乾淨。百貨公司或餐廳裡，也是如此。因此，我認為讓學校之間有競爭才是解決廁所問題的有效方法。

]]></description>
			<content:encoded><![CDATA[<p><strong>Update: 〈有味道的廁所〉一文為台大吳聰敏教授所寫，先前誤為張清溪教授所撰，已更正</strong>。</p>
<p>2009年5月17台灣版<a href="http://tw.nextmedia.com/rnews/index/type/article/SecID/102/ArtID/44259/IssueID/20090517">《蘋果日報》的新聞</a>：</p>
<blockquote><p>
環保署長沈世宏今天全程參與一項民間團體辦的廁所清掃活動後表示，今年度列管考核全國1萬7000多所公共廁所，明年將擴大到3萬6000所，並將融合應用今日所學的清掃方法與精神。</p>
<p>美化日本協會推廣清掃廁所影響，台灣美化協會在台灣推動清掃廁所已7年，在今年年度大會系列活動中，發動全國57個分會動員上萬人於今天在全國各地清掃廁所，沈世宏是在台北市葫蘆國小參與清掃廁所。</p>
<p>協會指出，近1000人上午到葫蘆國小，在流程解說、任務分工後，進入廁所各自工作崗位，在小組長與日本顧問協助下認真清掃藏污納垢的馬桶，洗手台、天花板、牆壁、燈管、鏡子也不放過，發揮徹底學習精神。</p>
<p>沈世宏全程參與2小時的清掃過程後，有感而發表示，世界要美麗，要靠每一個人。清掃學習注重細節，體驗凡事徹底，過程處處是學習，讓人成長，完成後更充滿成就感，未來要將這種精神擴散到各鄉里城鎮。
</p></blockquote>
<p>我的舊文〈<a href="http://lukhnos.org/blog/zh/archives/132">大老闆們，別再洗廁所了！</a>〉：</p>
<blockquote><p>
有沒有可能設計出「比較不容易髒」的廁所？有沒有不那麼痛苦的廁所清潔法？為什麼大家還在用10元一支的塑膠掃把、拖沒幾次就斷頭的拖把在掃地、拖地？掃地一定得一整班人鬧哄哄地掃，沒有更優雅的輪班分時分工制？所以，親愛的大老闆們，請你們別再掃廁所了！請你們找點別的事情，消耗平日吃太多所屯積的脂肪。掃廁所這件事情，就請動動你們搞cost-down時的精明腦袋，為我們的環境品質做點好事吧！
</p></blockquote>
<p>吳聰敏，〈<a href="http://homepage.ntu.edu.tw/~ntut019/edu/Toilet.pdf">有味道的廁所</a>〉（粗體字為我所加）：</p>
<blockquote><p>
台灣的學生須打掃校園，其中包括廁所。學校的廁所不乾淨，有味道，原因是廁所是由學生打掃。<strong>被分派到的學生只覺得倒楣，並沒有把它打掃乾淨的誘因</strong> [...]</p>
<p>小孩在公立學校上課，家長透過納稅繳了大筆學費。學校要學生掃廁所，這好比是麥當勞或百貨公司的老闆，要求客人清掃顧客以及員工的廁所。而且，員工的廁所必須更乾淨！有人認為，打掃是生活教育的一部分。從這個角度來看，掃廁所的目的應該是希望學生能養成好習慣，回到在家裡也能幫忙整理環境。不過，我很懷疑全台灣到底有多少學生在家裡會幫忙刷馬桶的。我同意生活教育重要，但由實施結果來看，我看不出來掃廁所是有意義的生活教育。更嚴重的是，這個制度可能對某些學生的健康有不好的影響。</p>
<p><strong>廁所問題如何解決？最簡單的答案是廁所清潔工作外包</strong>，不要再由學生來清掃。這樣會讓學校的廁所乾淨一些。但我相信清潔工作外包之後，老師的廁所仍然會比學生的乾淨。我小孩所上的民間經營的安親班，學生與老師使用同一廁所，同樣乾淨。百貨公司或餐廳裡，也是如此。因此，我認為<strong>讓學校之間有競爭才是解決廁所問題的有效方法</strong>。
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/927/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>季節</title>
		<link>http://lukhnos.org/blog/zh/archives/925</link>
		<comments>http://lukhnos.org/blog/zh/archives/925#comments</comments>
		<pubDate>Tue, 05 May 2009 20:34:03 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[bon vivant 活]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=925</guid>
		<description><![CDATA[最喜歡的版本是 D z Blue Sunbeam Mix，但沒想到這張這麼老了，2000年6月出的 remix 合輯。
Seasons (浜崎あゆみ)

今年もひとつ季節が巡って
思い出はまた遠くなった
曖昧だった夢と現実の
境界線は濃くなった
それでもいつか君に話した
夢に嘘はひとつもなかった
La La-i
今日がとても楽しいと
明日もきっと楽しくて
そんな日々が続いてく
そう思っていたあの頃
繰り返してく毎日に少し
物足りなさを感じながら
不自然な時代のせいだよと
先回りして諦めていた
La La-i
今日がとても悲しくて
明日もしも泣いていても
そんな日々もあったねと
笑える日が来るだろう
幾度巡り巡りゆく
限りある季節(とき)の中に
僕らは今生きていて
そして何を見つけるだろう

]]></description>
			<content:encoded><![CDATA[<p>最喜歡的版本是 D z Blue Sunbeam Mix，但沒想到這張這麼老了，2000年6月出的 remix 合輯。</p>
<p>Seasons (浜崎あゆみ)</p>
<blockquote><p>
今年もひとつ季節が巡って<br />
思い出はまた遠くなった<br />
曖昧だった夢と現実の<br />
境界線は濃くなった</p>
<p>それでもいつか君に話した<br />
夢に嘘はひとつもなかった<br />
La La-i</p>
<p>今日がとても楽しいと<br />
明日もきっと楽しくて<br />
そんな日々が続いてく<br />
そう思っていたあの頃</p>
<p>繰り返してく毎日に少し<br />
物足りなさを感じながら</p>
<p>不自然な時代のせいだよと<br />
先回りして諦めていた<br />
La La-i</p>
<p>今日がとても悲しくて<br />
明日もしも泣いていても<br />
そんな日々もあったねと<br />
笑える日が来るだろう</p>
<p>幾度巡り巡りゆく<br />
限りある季節(とき)の中に<br />
僕らは今生きていて<br />
そして何を見つけるだろう
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/925/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>惡名昭彰的 One-Liner</title>
		<link>http://lukhnos.org/blog/zh/archives/919</link>
		<comments>http://lukhnos.org/blog/zh/archives/919#comments</comments>
		<pubDate>Thu, 30 Apr 2009 17:41:04 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[tekhnologia 技術或者藝術]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=919</guid>
		<description><![CDATA[最近有某咖啡館的留言板在衝量，也有人在統計，其中有前輩用 Excel 的統計功能算出了每個人的留言數。也有人提到先跑 grep 再跑 sort 或者用 awk 的解法。
以下是很久沒寫的生鏽 Perl ，惡名昭彰的 one-liner 。把樂多留言板內容存到某個 sample.txt 裡面，然後：


cat sample.txt &#124; perl -e 'while () { $c{$1}++ if /Posted by (.+?) at.+\d\d\d\d/ } for $k (keys %c) { push @a, [$c{$k}, $k] } for $p (sort { $b->[0] &#60;=> $a->[0] }@a ) { print "$p->[1]: $p->[0]\n" }'


於是就會 dump 出：

lakatos: [...]]]></description>
			<content:encoded><![CDATA[<p>最近有某咖啡館的留言板在衝量，也有人在統計，其中有前輩用 Excel 的統計功能算出了每個人的留言數。也有人提到先跑 grep 再跑 sort 或者用 awk 的解法。</p>
<p>以下是很久沒寫的生鏽 Perl ，惡名昭彰的 one-liner 。把樂多留言板內容存到某個 sample.txt 裡面，然後：</p>
<blockquote><p>
<code><br />
cat sample.txt | perl -e 'while (<>) { $c{$1}++ if /Posted by (.+?) at.+\d\d\d\d/ } for $k (keys %c) { push @a, [$c{$k}, $k] } for $p (sort { $b->[0] &lt;=> $a->[0] }@a ) { print "$p->[1]: $p->[0]\n" }'<br />
</code>
</p></blockquote>
<p>於是就會 dump 出：</p>
<blockquote><p>
lakatos: 136<br />
白玫瑰: 64<br />
Richter: 55<br />
ricebug: 54<br />
盤: 53
</p></blockquote>
<p>（這樣夠明顯是哪個 blog 了吧）</p>
<p>不過竟然還寫得這麼長顯然是沒有辦法從事任何 Perl 競賽的（笑）。</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/919/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>看懂 iPhone view controller 記體體管理的原則（或者：didReceiveMemoryWarning 到底在搞什麼鬼？）</title>
		<link>http://lukhnos.org/blog/zh/archives/912</link>
		<comments>http://lukhnos.org/blog/zh/archives/912#comments</comments>
		<pubDate>Wed, 29 Apr 2009 19:25:31 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[tekhnologia 技術或者藝術]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=912</guid>
		<description><![CDATA[當 iPhone 或 iPod Touch 的記憶體不夠用的時候，當前 app 的所有 view controller 物件都會收到 didReceiveMemoryWarning 呼叫。你可以把它當成像 NSNotification 一樣的事件。
系統預設的 didReceiveMemoryWarning 實作（你一定用得到，因為你得呼叫 [super didReceiveMemoryWarning]）是，如果當前 controller 所擁有的 view 沒有其他 superview （通常代表意思是沒被顯示出來，例如，埋藏在 navigation chain 或其他 tab 當中），那這個 view object 就會被是放掉。
如果你的 controller 只有這個 view 物件，事情就到此為止。不過我們都知道人生從來不是這麼簡單的。
尤其，如果你的 controller 當中宣告了從 nib 載入了 IBOutlet 物件。根據 Apple 文件，xib 載入的時候所有的 IBOutlet 物件都已經至少有了 retain count 1 。這些物件通常也都被你的 view 物件所擁有，所以通常等你用到他們的時候，他們的 retain [...]]]></description>
			<content:encoded><![CDATA[<p>當 iPhone 或 iPod Touch 的記憶體不夠用的時候，當前 app 的所有 view controller 物件都會收到 <code>didReceiveMemoryWarning</code> 呼叫。你可以把它當成像 NSNotification 一樣的事件。</p>
<p>系統預設的 <code>didReceiveMemoryWarning</code> 實作（你一定用得到，因為你得呼叫 <code>[super didReceiveMemoryWarning]</code>）是，如果當前 controller 所擁有的 view 沒有其他 superview （通常代表意思是沒被顯示出來，例如，埋藏在 navigation chain 或其他 tab 當中），那這個 view object 就會被是放掉。</p>
<p>如果你的 controller 只有這個 view 物件，事情就到此為止。不過我們都知道人生從來不是這麼簡單的。</p>
<p>尤其，如果你的 controller 當中宣告了從 nib 載入了 <code>IBOutlet</code> 物件。根據 <a href="http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/MemoryMgmt/Articles/mmNibObjects.html#//apple_ref/doc/uid/TP40004998-SW2">Apple 文件</a>，xib 載入的時候所有的 IBOutlet 物件都已經至少有了 retain count 1 。這些物件通常也都被你的 view 物件所擁有，所以通常等你用到他們的時候，他們的 retain count 都至少是 2 。</p>
<p>但是你的 view object 被放掉時，這些 IBOutlet 還被 retain 著。所以你要做兩件事：</p>
<ol>
<li>在 view 被放掉時，也同樣放掉你的 IBOutlet</li>
<li>在你的 controller 被 dealloc 到時，也放掉你的 IBOutlet ，同時將他們的 pointer 設到 nil</li>
</ol>
<p>iPhone SDK 一直到 2.2.1 都沒有好方法讓你做到 1. ，所以請參考 <a href="http://furbo.org/2008/08/27/dealing-with-memory-loss-the-cleanup/">Craig Hockenberry 的這篇文章</a> ，簡言之就是要去 override <code>-[UIViewController setView:]</code> 才有辦法在 view 被放掉時也同時放掉那些 <code>IBOutlet</code>。</p>
<p>（雖然事實上，如果你照著 Apple 最新的 coding 規範，將 IBOutlet 都設為 readwrite retain property，那麼在你的 controller 下次再度載入 view 時，這些舊 IBOutlet 都會被放掉，但是呢，如果你的 IBOutlet 很肥，例如滾輪式選單，那麼最好是放掉他們）</p>
<p>然後呢，在你的 controller 要被 <code>dealloc</code> 的時候，記得放掉你的 <code>IBOutlet</code> 物件，同時將指標設到 nil。Apple 文件有說明原因：因為當你最後呼叫 <code>[super dealloc]</code> 的時候，你的 view object 會被放掉，然後如果你已經做了 1. ，view 被放掉時去釋放 <code>IBOutlet</code>，偏偏你早就已經在 <code>dealloc</code> method 前半部 release 了他們，那麼接下來就會有人對死掉的指標值（所謂的「當夠了物件」──dangling object）送出 <code>release</code> 訊息，那就爆炸了&#8230;</p>
<p>總之，iPhone app 在記憶體使用上的最高指導原則是 lazy loading。要用的時候才載入，不用的時候就放掉且將指標值設為 nil ，最不容易出錯。這也是 Apple 從 Objective-C 2.0 時代開始大量推薦使用 @property 的另一個原因。</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/912/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>為什麼 github 很多岩石</title>
		<link>http://lukhnos.org/blog/zh/archives/903</link>
		<comments>http://lukhnos.org/blog/zh/archives/903#comments</comments>
		<pubDate>Tue, 21 Apr 2009 19:49:36 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[tekhnologia 技術或者藝術]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=903</guid>
		<description><![CDATA[
因為 &#8220;any workflow&#8221; 這個關鍵詞害我決定跳船
把 README.markdown 放在目錄就有漂亮的首頁了
Google Code 好麻煩的
SourceForge 更麻煩的
svnhub
別人的計畫送了什麼 code 進去都一目了然
我有在用

]]></description>
			<content:encoded><![CDATA[<ul>
<li>因為 &#8220;<a href="http://whygitisbetterthanx.com/">any workflow</a>&#8221; 這個關鍵詞害我決定跳船</li>
<li>把 <a href="http://github.com/guides/readme-formatting">README.markdown</a> 放在目錄就有漂亮的首頁了</li>
<li>Google Code 好麻煩的</li>
<li>SourceForge 更麻煩的</li>
<li><a href="http://svnhub.com/">svnhub</a></li>
<li>別人的計畫送了什麼 code 進去都一目了然</li>
<li>我有在用</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/903/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>為什麼湯不熱 (tumblr) 很多岩石</title>
		<link>http://lukhnos.org/blog/zh/archives/901</link>
		<comments>http://lukhnos.org/blog/zh/archives/901#comments</comments>
		<pubDate>Tue, 21 Apr 2009 19:48:23 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[bon vivant 活]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=901</guid>
		<description><![CDATA[
預設的 theme 很簡單很好看
抹下來 (Markdown) 加加（還支援註腳！）
沒有留言系統！
Twitter 不是 microblog
想寫就寫才是找回寫作的 fu 應該有的 UI
我有在寫

]]></description>
			<content:encoded><![CDATA[<ul>
<li>預設的 theme 很簡單很好看</li>
<li>抹下來 (<a href="http://daringfireball.net/projects/markdown/">Markdown</a>) 加加（還支援<a href="http://michelf.com/projects/php-markdown/extra/">註腳</a>！）</li>
<li>沒有留言系統！</li>
<li>Twitter 不是 microblog</li>
<li>想寫就寫才是找回寫作的 fu 應該有的 UI</li>
<li>我有在寫</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/901/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>少年推特的煩惱</title>
		<link>http://lukhnos.org/blog/zh/archives/898</link>
		<comments>http://lukhnos.org/blog/zh/archives/898#comments</comments>
		<pubDate>Tue, 21 Apr 2009 19:46:04 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
				<category><![CDATA[fictions 假的]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/zh/?p=898</guid>
		<description><![CDATA[
@werther 想要追 (follow) @charlotte，但是後者一看到 @werther 追了太多人，當下就把他 block 掉了，so&#8230;&#8230;


]]></description>
			<content:encoded><![CDATA[<blockquote><div style="font-size:125%">
@werther 想要追 (follow) @charlotte，但是後者一看到 @werther 追了太多人，當下就把他 block 掉了，so&#8230;&#8230;
</div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/zh/archives/898/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
