﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Robin's Programming World</title><link>http://www.blogjava.net/fastzch/</link><description>I Love Programming As My Life!</description><language>zh-cn</language><lastBuildDate>Sat, 25 Apr 2026 00:24:35 GMT</lastBuildDate><pubDate>Sat, 25 Apr 2026 00:24:35 GMT</pubDate><ttl>60</ttl><item><title>Hybrid开发资源网站汇总</title><link>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 05 Aug 2014 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/416566.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/416566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/416566.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
http://cubiq.org/
<div id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd"></div>
<div>包含iscroll, infinity wall等</div>
<div><br />
</div>
<div><br />
</div><img src ="http://www.blogjava.net/fastzch/aggbug/416566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-08-05 09:45 <a href="http://www.blogjava.net/fastzch/archive/2014/08/05/416566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从 USB 设备启动 Surface</title><link>http://www.blogjava.net/fastzch/archive/2014/04/01/411761.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 31 Mar 2014 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/04/01/411761.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/411761.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/04/01/411761.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/411761.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/411761.html</trackback:ping><description><![CDATA[您可以从可启动 USB 设备启动 Surface。<br /><br />当 Surface 关闭时从可启动 USB 设备启动<br />步骤 1： &nbsp;&nbsp;&nbsp; 将可启动 USB 设备连接到 USB 端口。<br />步骤 2： &nbsp;&nbsp;&nbsp; 按住音量减小 (-) 控制键。<br />步骤 3： &nbsp;&nbsp;&nbsp; 按下并释放电源按钮。<br />步骤 4： &nbsp;&nbsp;&nbsp; 当显示 Surface 徽标时，释放音量控制键。 Surface 将启动 USB 设备上的软件。<br /><br />当 Surface 启用时从可启动 USB 设备启动<br />步骤 1： &nbsp;&nbsp;&nbsp; 将可启动 USB 设备连接到 USB 端口。<br />步骤 2： &nbsp;&nbsp;&nbsp; 从屏幕右边缘向左轻扫，然后点击&#8220;设置&#8221;。<br />（如果您使用鼠标，请指向屏幕的右上角，将鼠标指针下移并单击&#8220;设置&#8221;。）<br />步骤 3： &nbsp;&nbsp;&nbsp; 点击或单击&#8220;更改电脑设置&#8221;。<br />步骤 4： &nbsp;&nbsp;&nbsp; 点击或单击&#8220;更新和恢复&#8221;，然后点击或单击&#8220;恢复&#8221;。<br />步骤 5： &nbsp;&nbsp;&nbsp; 在&#8220;高级启动&#8221;下，点击或单击&#8220;立即重新启动&#8221;。<br />步骤 6： &nbsp;&nbsp;&nbsp; 在&#8220;选择一个选项&#8221;屏幕中，点击或单击&#8220;使用设备&#8221;。<br />步骤 7： &nbsp;&nbsp;&nbsp; 在&#8220;疑难解答&#8221;屏幕中，点击或单击&#8220;高级选项&#8221;。<br />步骤 8： &nbsp;&nbsp;&nbsp; 在&#8220;高级选项&#8221;屏幕中，点击或单击 USB 设备的名称。Surface 将重新启动并从 USB 设备启动。<br /><br />BTW, 还是官方文档靠谱，还是Google靠谱！！！<br />原文地址：http://www.microsoft.com/surface/zh-cn/support/storage-files-and-folders/boot-surface-pro-from-usb-recovery-device<br /><img src ="http://www.blogjava.net/fastzch/aggbug/411761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-04-01 00:15 <a href="http://www.blogjava.net/fastzch/archive/2014/04/01/411761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XCode Plugins Package Manager</title><link>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 04 Feb 2014 18:28:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/409533.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/409533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/409533.html</trackback:ping><description><![CDATA[非常不错的工具：<br />XCode Plugins Package Manager<br />https://github.com/mneorr/Alcatraz<br /><br />通过这个工具，我还装了以下插件：<br />AJKExtendedOpening<br />BBUDebuggerTuckAway<br />BBUncrustifyPlugin<br />CocoaPods<br />CodePilot<br />DLAutoresizeMaskPlugin<br />DerivedData Exterminator<br />FuzzyAutocomplete<br />HOStringSense<br />KSImageNamed<br />OMColorSense<br />OMQuickHelp<br />PluginConsole<br />QuickLocalization<br />SCXcodeMinimap<br />VVDocumenter-Xcode<br />XCFixin_CurrentLineHighlighter<br />XcodeAutoCloseDebug<br />XcodePlus Delete Line<br /><br />这些插件都是相当的好用呀！！！<br /><img src ="http://www.blogjava.net/fastzch/aggbug/409533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-02-05 02:28 <a href="http://www.blogjava.net/fastzch/archive/2014/02/05/409533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu环境下Apache2与Tomcat集成</title><link>http://www.blogjava.net/fastzch/archive/2014/02/05/409532.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 04 Feb 2014 18:21:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/02/05/409532.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/409532.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/02/05/409532.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/409532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/409532.html</trackback:ping><description><![CDATA[1、安装Apache2<br />&nbsp;&nbsp;&nbsp; apt-get install apache2<br /><br />重启命令： /etc/init.d/apache2 restart<br /><br />/etc/apache2/conf.d/charset<br />这个是网站编码配置，需要将最后行的 ＃AddDefaultCharset UTF-8 前面的#去掉，使用UTF-8编码，当然也可以把 UTF-8改成别的编码。<br /><br />这个是网站目录配置，想更改网站目录的话，就修改这个，上面的目录的 apache2.conf 里面也有网站目录的<br />/etc/apache2/sites-available/default<br /><br /><br />2、 install JK connector.<br />apt-get install libapache2-mod-jk<br />so文件会被安装到目录： /usr/lib/apache2/modules 中。<br />安装完后，在/etc/apache2/mods-enabled下会多出一个jk.load文件，重启apache2后，apache自动装载这个文件以加载mod_jk.<br /><br /><br />3、修改httpd.conf,一开始它是空的,增加<br />#Server Name<br />ServerName 127.0.0.1<br /><br />#JK config<br />#JkWorkersFile /etc/libapache2-mod-jk/workers.properties<br />JkLogFile /var/log/apache2/mod_jk.log<br />JkLogLevel info<br />JkMount /*.jsp ajp13_worker<br />JkMount /*/servlet/ ajp13_worker<br />JkMount /*.do ajp13_worker<br /><br />4、/etc/apache2/sites-available中增加一个文件，文件名随便.<br />如我的tomcat,内容如下:<br />&lt;VirtualHost 127.0.0.1&gt;<br />&nbsp; ServerAdmin fastzch@gmail.com<br />&nbsp; DocumentRoot "/var/www"<br />&nbsp; ErrorLog "/var/log/apache2/ediskmanage_errors.log"<br />&nbsp; CustomLog "/var/log/apache2/ediskmanage_accesses.log" common<br /><br />&nbsp; JkMount /servlet/* ajp13_worker<br />&nbsp; #让Apache支持对servlet传送，用以Tomcat解析<br />&nbsp; JkMount /*.jsp ajp13_worker<br />&nbsp; #让Apache支持对jsp传送，用以Tomcat解析<br />&nbsp; JkMount /*.do ajp13_worker<br />&nbsp; #让Apache支持对.do传送，用以Tomcat解析<br />&lt;/VirtualHost&gt;<br /><br />5、执行 a2ensite tomcat<br /><br />6、/etc/init.d/apache2 reload<br /><br />7、部署应用后重启Tomcat即可<img src ="http://www.blogjava.net/fastzch/aggbug/409532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-02-05 02:21 <a href="http://www.blogjava.net/fastzch/archive/2014/02/05/409532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Phonegap Debug Note</title><link>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 02 Jan 2014 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/408382.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/408382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/408382.html</trackback:ping><description><![CDATA[Phonegap has big change from v3, the all features are needed to add as plugin.
<div><br />
</div>
<div>The following are notes for debug feature:</div>
<div>The "console" is a plugin now, so we need to add it by following command:</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->cordova&nbsp;plugin&nbsp;add&nbsp;https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git</div>
</div>
<div><br />
</div>
<div>And then you could use console API now, e.g.:</div>
<div><span style="font-size: 13px; background-color: #eeeeee;">console.</span><span style="font-size: 13px; color: #0000ff;">log</span><span style="font-size: 13px; background-color: #eeeeee;">(</span><span style="font-size: 13px; font-weight: bold;">'</span><span style="font-size: 13px; font-weight: bold;">onSuccess!&nbsp;contacts.length:</span><span style="font-size: 13px; font-weight: bold;">'</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;</span><span style="font-size: 13px; background-color: #eeeeee;">+</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;contacts</span><span style="font-size: 13px; background-color: #eeeeee;">.</span><span style="font-size: 13px; color: #0000ff;">length</span><span style="font-size: 13px; background-color: #eeeeee;">&nbsp;);</span></div>
<div><br />
</div>
<div>You will see logs on output console of Xcode or Logcat of Eclipse.</div>
<div>Pls see following screenshots:</div>
<div><img src="http://www.blogjava.net/images/blogjava_net/fastzch/7477/o_Snip20140102_3.jpg" border="0" alt="" width="524" height="262" /><br />
</div>
<div><br />
</div>
<div><img src="http://www.blogjava.net/images/blogjava_net/fastzch/7477/o_java.jpg" border="0" alt="" width="998" height="337" /><br />
</div>
<div><br />
</div>
<div><br />
</div><img src ="http://www.blogjava.net/fastzch/aggbug/408382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2014-01-02 14:17 <a href="http://www.blogjava.net/fastzch/archive/2014/01/02/408382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iOS App -- WHETC 发布</title><link>http://www.blogjava.net/fastzch/archive/2012/11/10/391148.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 10 Nov 2012 12:06:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/11/10/391148.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/391148.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/11/10/391148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/391148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/391148.html</trackback:ping><description><![CDATA[我的首个个人iOS App -- WHETC已经发布了。
<div>主要是为武汉车主提供ETC查询的功能。</div>
<div><br />
</div>
<div>有需要的朋友，可直接在App Store上搜WHETC，然后下载。</div>
<div>也可通过下载链接直接下载：https://itunes.apple.com/cn/app/whetc/id558349225</div>
<div><br />
</div>
<div>有什么好的建议或问题请留言。谢谢！</div>
<div><br />
</div><img src ="http://www.blogjava.net/fastzch/aggbug/391148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-11-10 20:06 <a href="http://www.blogjava.net/fastzch/archive/2012/11/10/391148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to uninstall dnscrypt client on MAC</title><link>http://www.blogjava.net/fastzch/archive/2012/09/16/387829.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sun, 16 Sep 2012 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/09/16/387829.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/387829.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/09/16/387829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/387829.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/387829.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
找了半天，终于找到这个工具：
<div>http://shared.opendns.com/dnscrypt/packages/osx-client/</div>
<div>下载 &nbsp;<a href="http://shared.opendns.com/dnscrypt/packages/osx-client/Uninstall.app.zip" style="font-family: Times; font-size: medium; line-height: normal; ">Uninstall.app.zip</a></div><img src ="http://www.blogjava.net/fastzch/aggbug/387829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-09-16 18:14 <a href="http://www.blogjava.net/fastzch/archive/2012/09/16/387829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>首个iOS App终于提交了</title><link>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 03 Sep 2012 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/386856.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/386856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/386856.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
经过两个月左右的时间策划和开发，我个人的首个iOS App终于提交了，先冒个泡，等Review通过后会再开一个专贴进行介绍和技术支持。
<div>至于是个什么应用，我想可能还得先保密一两周什么的，这得看Apple的速度了，哈哈...</div>
<div><br />
</div>
<div>有兴趣的可以猜猜看。</div><img src ="http://www.blogjava.net/fastzch/aggbug/386856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-09-03 11:45 <a href="http://www.blogjava.net/fastzch/archive/2012/09/03/386856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XP IIS出现The specified module could not be found解决方法</title><link>http://www.blogjava.net/fastzch/archive/2012/07/03/382092.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 03 Jul 2012 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/07/03/382092.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/382092.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/07/03/382092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/382092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/382092.html</trackback:ping><description><![CDATA[打开IIS 信息服务，找到默认网站，点右键，选择属性，在主属性中选编辑，打开&#8220;目录安全性&#8221;选项卡，单击&#8220;匿名访问和验证控制&#8221;里的&#8220;编辑&#8221;按钮，在弹出的对话框中确保只选中了&#8220;匿名访问&#8221;和&#8220;集成Windows验证&#8221;两项，单击匿名访问中的编辑，去掉&#8220;允许IIS控制密码&#8221;。就ok了。<img src ="http://www.blogjava.net/fastzch/aggbug/382092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-07-03 15:09 <a href="http://www.blogjava.net/fastzch/archive/2012/07/03/382092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Open Mac Ftp Server</title><link>http://www.blogjava.net/fastzch/archive/2012/06/30/381890.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 30 Jun 2012 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/06/30/381890.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/381890.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/06/30/381890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/381890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/381890.html</trackback:ping><description><![CDATA[<p style="font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; ">While this hint will work as stated, it's pretty much incorrect usage of&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchctl</code>&nbsp;for the purpose of the hint.</p><p style="font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; "><code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchctl load...</code>loads the FTP service into&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchd</code>'s database of services. When you do an&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">unload</code>, you are telling&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchd</code>&nbsp;to not manage it anymore.</p><p style="font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; ">So a better way to do this--probably the proper way--is to first issue the command to load the service:<br /><br /><code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">sudo launchctl load -w /System/Library/LaunchDaemons/ftp.plist</code><br /><br />Then, if you'd like to stop FTP, issue this command:<br /><br /><code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">sudo launchctl stop com.apple.ftpd</code><br /><br />And if you decide you'd like to bring it back up, use this command:<br /><br /><code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">sudo launchctl start com.apple.ftpd</code></p><p id="" style="font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; ">If you'd like for&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchd</code>&nbsp;to forget about FTP, that is when you would run this:<br /><br /><code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">sudo launchctl unload /System/Library/LaunchDaemons/ftp.plist</code></p><p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: verdana, tahoma, helvetica, arial, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; ">The hint as-is will work, but seems a little counter-productive to make&nbsp;<code style="color: #9f2d00; font-family: Monaco, Courier, monospace; ">launchd</code>&nbsp;remember and forget about FTP all the time.</p><img src ="http://www.blogjava.net/fastzch/aggbug/381890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-06-30 23:15 <a href="http://www.blogjava.net/fastzch/archive/2012/06/30/381890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 3 MVC and JSON example</title><link>http://www.blogjava.net/fastzch/archive/2012/06/04/379962.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Mon, 04 Jun 2012 15:06:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/06/04/379962.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/379962.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/06/04/379962.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/379962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/379962.html</trackback:ping><description><![CDATA[老外写的文章真的很易懂！ &nbsp; <br />原文地址：http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/<br /><br /><br />Published: July 28, 2011 , Updated: July 27, 2011 , Author: mkyong<br /><br />&nbsp;<br /><br />In Spring 3, you can enable &#8220;mvc:annotation-driven&#8221; to support object conversion to/from JSON format, if Jackson JSON processor is existed on the project classpath.<br /><br />In this tutorial, we show you how to output JSON data from Spring MVC.<br /><br />Technologies used :<br /><br />Spring 3.0.5.RELEASE<br />Jackson 1.7.1<br />JDK 1.6<br />Eclipse 3.6<br />Maven 3<br />1. Project Dependencies<br /><br />To use JSON in Spring MVC, you need to include Jackson dependency.<br /><br />&nbsp;&nbsp;&nbsp; &lt;properties&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;spring.version&gt;3.0.5.RELEASE&lt;/spring.version&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/properties&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &lt;dependencies&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- Jackson JSON Mapper --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;artifactId&gt;jackson-mapper-asl&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;version&gt;1.7.1&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/dependency&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- Spring 3 dependencies --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.springframework&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;artifactId&gt;spring-core&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;version&gt;${spring.version}&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/dependency&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.springframework&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;artifactId&gt;spring-web&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;version&gt;${spring.version}&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/dependency&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.springframework&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;version&gt;${spring.version}&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/dependency&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &lt;/dependencies&gt;<br /><br />&nbsp;<br />2. Model<br /><br />A simple POJO, later convert this object into JSON output.<br /><br />package com.mkyong.common.model;<br />&nbsp;<br />public class Shop {<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; String name;<br />&nbsp;&nbsp;&nbsp; String staffName[];<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; //getter and setter methods<br />&nbsp;<br />}<br /><br />&nbsp;<br />3. Controller<br /><br />Add &#8220;@ResponseBody&#8221; in the return value, no much detail in the Spring documentation.<br /><br />As i know, when Spring see<br /><br />Jackson library existed on classpath<br />&#8220;mvc:annotation-driven&#8221; is enabled<br />Return method annotated with @ResponseBody<br />It will handle the JSON conversion automatically.<br /><br />package com.mkyong.common.controller;<br />&nbsp;<br />import org.springframework.stereotype.Controller;<br />import org.springframework.web.bind.annotation.PathVariable;<br />import org.springframework.web.bind.annotation.RequestMapping;<br />import org.springframework.web.bind.annotation.RequestMethod;<br />import org.springframework.web.bind.annotation.ResponseBody;<br />import com.mkyong.common.model.Shop;<br />&nbsp;<br />@Controller<br />@RequestMapping("/kfc/brands")<br />public class JSONController {<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; @RequestMapping(value="{name}", method = RequestMethod.GET)<br />&nbsp;&nbsp;&nbsp; public @ResponseBody Shop getShopInJSON(@PathVariable String name) {<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Shop shop = new Shop();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; shop.setName(name);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; shop.setStaffName(new String[]{"mkyong1", "mkyong2"});<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return shop;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;<br />}<br />4. mvc:annotation-driven<br /><br />Enable &#8220;mvc:annotation-driven&#8221; in your Spring configuration XML file.<br /><br />&lt;beans xmlns="http://www.springframework.org/schema/beans"<br />&nbsp;&nbsp;&nbsp; xmlns:context="http://www.springframework.org/schema/context"<br />&nbsp;&nbsp;&nbsp; xmlns:mvc="http://www.springframework.org/schema/mvc" <br />&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />&nbsp;&nbsp;&nbsp; xsi:schemaLocation="<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/beans&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/beans/spring-beans-3.0.xsd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/context <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/context/spring-context-3.0.xsd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/mvc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &lt;context:component-scan base-package="com.mkyong.common.controller" /&gt;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp; &lt;mvc:annotation-driven /&gt;<br />&nbsp;<br />&lt;/beans&gt;<br />5. Demo<br /><br />URL : http://localhost:8080/SpringMVC/rest/kfc/brands/kfc-kampar<br /><br /><br />Download Source Code<br /><br />Download it &#8211; SpringMVC-JSON-Example.zip (7 KB)<br />References<br /><br />mvc-annotation-driven documentation<br />High-performance JSON processor<br />Spring MVC and XML example<br /><img src ="http://www.blogjava.net/fastzch/aggbug/379962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-06-04 23:06 <a href="http://www.blogjava.net/fastzch/archive/2012/06/04/379962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MongoDB install notes on Mac:</title><link>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 02 Jun 2012 17:15:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/379837.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/379837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/379837.html</trackback:ping><description><![CDATA[<div>Reference page: Http://docs.mongodb.org/master/tutorial/install-mongodb-on-os-x/</div>
<div><br />
</div>
<div>1, install brew, if it is exist, skip this step.</div>
<div>Reference page: &nbsp;http://mxcl.github.com/homebrew/</div>
<div>Execute the following command:</div>
<div>#/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"</div>
<div><br />
</div>
<div>2, install MongoDB:</div>
<div>#brew update</div>
<div>#brew install mongodb</div>
<div><br />
</div>
<div>3, use mondod command to startup MongoDB</div>
<div>#nohup mongod &amp;</div>
<div><br />
</div>
<div>4, enter mongo shell for testing:</div>
<div>#mongo</div>
<div><br />
</div>
<div>MongoDB shell version: 2.0.5</div>
<div>connecting to: test</div>
<div>&gt; db.test.save({a:1})</div>
<div>&gt; db.test.find()</div>
<div>{ "_id" : ObjectId("4fca4824293f5115fa740813"), "a" : 1 }</div>
<div>&gt;&nbsp;</div>
<div><br />
</div>
<div>5, GUI client recommendations:</div>
<div><br />
</div>
<div>MongoExplorer</div>
<div>MongoHub</div>
<div><br />
</div>
<div>6, MongoDB has provided a web base management inerface:</div>
<div>http://localhost:28017/</div>
<div><br />
</div>
<div>7, export and import:</div>
<div><span style="border-collapse: collapse; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; font-size: medium; ">$ mongodump -h test.xxxx.com:52000 -d dataname -o /home/aa/dev/mongodb/data<br />
<br />
mongodump mongo导出数据库命令 mongodump --help 可以查看该命令下所有的帮助<br />
<br />
-h 导出源<br />
-d 要导出的数据库名称<br />
-o 数据库要导出的位置<br />
<br />
在终端滚过N行之后，数据库导出完成，可以去/home/aa/dev/mongodb/data 目录下查看导出的文件，bson格式的（我导出后没有马上就看到文件，等了一会才出现的，原因不明）<br />
<br />
然后数据库恢复使用：mongorestore 命令<br />
<br />
$ mongorestore -d cmsdev&nbsp; /home/xx/dev/mongodb/data/cmsdev<br />
<br />
-d 使用的数据库名称<br />
后面直接加你刚才导出的目录，这样是直接恢复所有表<br />
<br />
如果-c 是恢复一个表</span></div><img src ="http://www.blogjava.net/fastzch/aggbug/379837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-06-03 01:15 <a href="http://www.blogjava.net/fastzch/archive/2012/06/03/379837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>永久恢复联通 iPhone4 的 YouTube</title><link>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Tue, 17 Jan 2012 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/368638.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/368638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/368638.html</trackback:ping><description><![CDATA[<div>
<h2><span style="font-weight: normal; font-size: 14pt; ">原文地址：</span><span style="font-weight: normal;"><span style="font-size: 12pt; ">&nbsp;</span></span><span style="font-weight: normal; font-size: 12pt; ">http://www.inanu.net/post/314.html</span><span style="font-weight: normal; font-size: 14pt; "><br /></span><span style="font-weight: normal; font-size: 14pt; ">iOS 5.0.1 亲测</span><br /><br /><br />永久恢复联通 iPhone4 的 YouTube</h2>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 2px; padding-right: 10px; padding-bottom: 2px; padding-left: 10px; border-style: initial; border-color: initial; font-size: 12px; vertical-align: baseline; line-height: 18px; height: 18px; position: relative; color: #999999; overflow-x: hidden; overflow-y: hidden; font-family: Tahoma, Arial, Helvetica, sans-serif; text-align: left; background-color: #f7f7f7; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 20px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; display: block; background-image: url(http://www.inanu.net/wp-content/themes/zbench/images/icons.gif); background-attachment: scroll; background-origin: initial; background-clip: initial; background-color: initial; float: left; background-position: 0px -40px; background-repeat: no-repeat no-repeat; ">作者:&nbsp;<a href="http://www.inanu.net/post/author/nanu" title="查看 Nanu 的所有文章" rel="author" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; color: #999999; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; ">Nanu</a>&nbsp;日期: 2011-05-18</span></div>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 12px; vertical-align: baseline; clear: both; color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; line-height: normal; text-align: left; background-color: #f7f7f7; "></div>
<div data-find="_6" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-right: 10px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; overflow-x: hidden; overflow-y: hidden; text-align: left; background-color: #f7f7f7; ">
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">在有 G.F.W. &#8220;保护&#8221;下的天朝网络，联通竟然还阉割掉了 iPhone4 的 Youtube 应用，真是断子绝孙啊！不甘心，一定要把 Youtube 找回来！</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">在网上看了很关于恢复联通 iPhone4 YouTube 的方法，总结下大致就 2 种方法：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
1. 利用SBSettings恢复；（我测试是没有效果的）<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " />
2. 在 Safari 上访问 m.youtube.com 之后挂个主屏幕的标签；（图标太恶心）</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">下面终极恢复方法来了：</p>
<ul style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; line-height: normal; margin-top: 0px; margin-right: 30px; margin-bottom: 18px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">该方法只适用于联通 iPhone4；</strong></li>
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">iPhone4 必须已经越狱，如果不想越狱的，请使用上面的方法 2；</strong></li>
     <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; ">该方法适用于所有的 iOS 固件版本；</strong></li>
</ul>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">1. 将 iPhone4 连接至 i-Funbox，并进入到 //Applications/YouTube.app 目录；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">2. 将目录中的 Info.plist 文件复制到你的电脑上（做个备份，以防万一）；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">3. 将下面的代码复制粘贴到一个文件中，并命名为 Info.plist；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">4. 将新建的 Info.plist 复制到 iPhone4 中的 YouTube.app 目录，覆盖原文件；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">5. 重启 iPhone4；</p>
<p style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; vertical-align: baseline; line-height: 18px; ">HOHO! 熟悉的 YouTube 图标回来啦！</p>
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;plist&nbsp;PUBLIC&nbsp;"-//Apple&nbsp;Computer//DTD&nbsp;PLIST&nbsp;1.0//EN"&nbsp;"http://www.apple.com/DTDs/PropertyList-1.0.dtd"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plist&nbsp;</span><span style="color: #FF0000; ">version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #FF0000; ">&nbsp;converted_by</span><span style="color: #0000FF; ">="i-funbox.com"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTXcode<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>0324<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTSDKName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iphoneos4.1.internal<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UIApplicationExitsOnSuspend<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">true&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDevelopmentRegion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>English<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>1.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTPlatformName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iphoneos<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundlePackageType<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>APPL<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleSupportedPlatforms<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>iPhoneOS<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>SBUsesNetwork<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>3<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleInfoDictionaryVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>6.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleExecutable<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTCompiler<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>SBMatchingApplicationGenres<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>Entertainment<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>Social&nbsp;Networking<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLTypes<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube&nbsp;Internal&nbsp;URL<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleURLSchemes<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>youtube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleIdentifier<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>com.apple.youtube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleResourceSpecification<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>ResourceRules.plist<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>DTPlatformVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.1&nbsp;GM<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleIconFiles<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon-72.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>icon@2x.png<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDisplayName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleSignature<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>????<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>CFBundleDisplayName<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>YouTube<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UISupportedInterfaceOrientations<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationPortrait<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationPortraitUpsideDown<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationLandscapeLeft<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>UIInterfaceOrientationLandscapeRight<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>MinimumOSVersion<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span>4.1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">string</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span>UIDeviceFamily<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">key</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>1<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span>2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">integer</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">array</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dict</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plist</span><span style="color: #0000FF; ">&gt;</span></div>
<br />

</div>
</div><img src ="http://www.blogjava.net/fastzch/aggbug/368638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-01-17 10:43 <a href="http://www.blogjava.net/fastzch/archive/2012/01/17/368638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]查找 EXC_BAD_ACCESS 问题根源的方法</title><link>http://www.blogjava.net/fastzch/archive/2012/01/05/367925.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 05 Jan 2012 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2012/01/05/367925.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367925.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2012/01/05/367925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367925.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367925.html</trackback:ping><description><![CDATA[<div>原文地址： http://www.cocoachina.com/macdev/objc/2011/0219/2661.html<br /><br /><div style="margin-top: 19px; margin-right: 10px; margin-bottom: 20px; margin-left: 10px; height: 58px; width: 609px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #ebf1ed; border-right-color: #ebf1ed; border-bottom-color: #ebf1ed; border-left-color: #ebf1ed; border-image: initial; font-family: 'Lucida Grande', Geneva, Arial, Verdana, Tahoma, Arial, 微软雅黑, 黑体, 宋体; font-size: 12px; line-height: normal; "><p style="margin-top: 4px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; height: 50px; width: 601px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #f3f4f4; "><span style="display: block; height: 31px; width: 578px; margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 8px; line-height: 1.4; overflow-x: hidden; overflow-y: hidden; ">写程序遇到 Bug 并不可怕，大部分的问题，通过简单的 Log 或者 代码分析并不难找到原因所在。但是在 Objective-C 编程中遇到 EXC_BAD_ACCESS 问题的时候，通过简单常规的手段很难发现问题。</span></p></div><div id="article_text_font" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; height: auto; width: 643px; line-height: 1.8; font-family: 'Lucida Grande', Geneva, Arial, Verdana, Tahoma, Arial, 微软雅黑, 黑体, 宋体; "><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 写程序遇到 Bug 并不可怕，大部分的问题，通过简单的 Log 或者 代码分析并不难找到原因所在。但是在 Objective-C 编程中遇到 EXC_BAD_ACCESS 问题的时候，通过简单常规的手段很难发现问题。这篇文章，给大家介绍一个常用的查找 EXC_BAD_ACCESS 问题根源的方法。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 首先说一下 EXC_BAD_ACCESS 这个错误，可以这么说，90%的错误来源在于对一个已经释放的对象进行release操作。举一个简单的例子来说明吧，首先看一段Java代码：</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">public class Test{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s = &#8220;This is a test string&#8221;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s.substring(s.indexOf(&#8220;a&#8221;),(s.length()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(s);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />}</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 这种写法在Java中很常见也很普遍，这不会产生任何问题。但是到了 Objective-C 中，就会出事，考虑这个程序：</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; "><span style="color: #339966; ">#import &lt;Foundation/Foundation.h&gt;<br /><br />int main (int argc, const char * argv[]) {<br />NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NSString* s = [[NSString alloc]initWithString:@&#8221;This is a test string&#8221;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = [s substringFromIndex:[s rangeOfString:@"a"].location];//内存泄露<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [s release];//错误释放<br />[pool drain];//EXC_BAD_ACCESS<br />return 0;<br />}</span><br /><br />&nbsp;&nbsp;&nbsp; 这个例子当然狠容易的看出问题所在，如果这段代码包含在一个很大的逻辑中，确实容易被忽略。Objective-C 这段代码有三个致命问题：1、内存泄露；2、错误释放；3、造成 EXC_BAD_ACCESS 错误。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 1， NSString* s = [[NSString alloc]initWithString:@&#8221;This is a test string&#8221;]; 创建了一个 NSString Object，随后的 s = [s substringFromIndex:[s rangeOfString:@"a"].location]; 执行后，导致创建的对象引用消失，直接造成内存泄露。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 2，错误释放。[s release]; 这个问题，原因之一是一个逻辑错误，以为 s 还是我们最初创建的那个 NSString 对象。第二是因为从 substringFromIndex:(NSUInteger i) 这个方法返回的 NSString 对象，并不需要我们来释放，它其实是一个被 substringFromIndex 方法标记为 autorelease 的对象。如果我们强行的释放了它，那么会造成 EXC_BAD_ACCESS 问题。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 3， EXC_BAD_ACCESS。由于 s 指向的 NSString 对象被标记为 autorelease, 则在 NSAutoreleasePool 中已有记录。但是由于我们在前面错误的释放了该对象，则当 [pool drain] 的时候，NSAutoreleasePool 又一次的对它记录的 s 对象调用了 release 方法，但这个时候 s 已经被释放不复存在，则直接导致了 EXC_BAD_ACCESS问题。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 那么，知道了 EXC_BAD_ACCESS 的诱因之一后，如何快速高效的定位问题？</p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">1: 为工程运行时加入 NSZombieEnabled 环境变量，并设为启用，则在 EXC_BAD_ACCESS 发生时，XCode 的 Console 会打印出问题描述。</p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">首先双击 XCode 工程中，Executables 下的 可执行模组，</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; text-align: center; "><img width="469" height="311" border="0" alt="" src="http://www.cocoachina.com/cms/uploads/allimg/110219/8_110219221940_1.png" data-pinit="registered" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; cursor: pointer; " /></p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">在弹出窗口中，Variables to be set in the environment，添加 NSZombieEnabled，并设定为 YES，点击选中复选框启用此变量。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; text-align: center; "><img width="290" height="415" border="0" alt="" src="http://www.cocoachina.com/cms/uploads/allimg/110219/8_110219222206_1.png" data-pinit="registered" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; cursor: pointer; " /></p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 这样，运行上述 Objective-C 时会看到控制台输出：Untitled[3646:a0f] *** -[CFString release]: message sent to deallocated instance 0x10010d340</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; text-align: center; "><img width="472" height="344" border="0" alt="" src="http://www.cocoachina.com/cms/uploads/allimg/110219/8_110219222424_1.png" data-pinit="registered" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; cursor: pointer; " /></p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 这条消息对于定位问题有很好的提示作用。但是很多时候，只有这条提示是不够的，我们需要更多的提示来帮助定位问题，这时候再加入 MallocStackLogging 来启用malloc记录。</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; text-align: center; "><img width="291" height="414" border="0" alt="" src="http://www.cocoachina.com/cms/uploads/allimg/110219/8_110219222612_1.png" data-pinit="registered" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; cursor: pointer; " /></p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; "><br />&nbsp;&nbsp;&nbsp; 当错误发生后，在终端执行：</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; "><span style="color: #339966; ">malloc_history ${App_PID} ${Object_instance_addr}</span></p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 则会获得相应的 malloc 历史记录，比如对于上一个控制台输出</p><p style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; "><span style="color: #339966; ">Untitled[3646:a0f] *** -[CFString release]: message sent to deallocated instance 0x10010d340</span></p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 则我们可以在终端执行，结果如下：</p><p id="" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">Buick-Wongs-MacBook-Pro:Downloads buick$ malloc_history 3646 0x10010d340<br />malloc_history Report Version: 2.0<br />Process: Untitled [3646]<br />Path: /Users/buick/Desktop/Untitled/build/Debug/Untitled<br />Load Address: 0&#215;100000000<br />Identifier: Untitled<br />Version: ??? (???)<br />Code Type: X86-64 (Native)<br />Parent Process: gdb-i386-apple-darwin [3638]<br /><br />Date/Time: 2011-02-01 15:07:04.181 +0800<br />OS Version: Mac OS X 10.6.6 (10J567)<br />Report Version: 6<br /><br />ALLOC 0x10010d340-0x10010d357 [size=24]: thread_7fff70118ca0 |start | main | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | +[NSString initialize] | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | NXCreateMapTableFromZone | malloc_zone_malloc<br />&#8212;-<br />FREE 0x10010d340-0x10010d357 [size=24]: thread_7fff70118ca0 |start | main | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | _finishInitializing | free<br /><br />ALLOC 0x10010d340-0x10010d357 [size=24]: thread_7fff70118ca0 |start | main | -[NSPlaceholderString initWithString:] | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | _class_initialize | +[NSMutableString initialize] | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | NXCreateMapTableFromZone | malloc_zone_malloc<br />&#8212;-<br />FREE 0x10010d340-0x10010d357 [size=24]: thread_7fff70118ca0 |start | main | -[NSPlaceholderString initWithString:] | objc_msgSend | lookUpMethod | prepareForMethodLookup | _class_initialize | _class_initialize | _finishInitializing | free<br /><br />ALLOC 0x10010d340-0x10010d35f [size=32]: thread_7fff70118ca0 |start | main | -[NSCFString substringWithRange:] | CFStringCreateWithSubstring | __CFStringCreateImmutableFunnel3 | _CFRuntimeCreateInstance | malloc_zone_malloc</p><p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8; ">&nbsp;&nbsp;&nbsp; 这样就可以很快的定位出问题的代码片段了，注意输出的最后一行，，，这行虽然不是问题的最终原因，但是离问题点已经很近了，随着它找下去，八成就会找到问题。</p></div></div><img src ="http://www.blogjava.net/fastzch/aggbug/367925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2012-01-05 16:18 <a href="http://www.blogjava.net/fastzch/archive/2012/01/05/367925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[copy]创业公司应该如何招人？</title><link>http://www.blogjava.net/fastzch/archive/2011/12/31/367620.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 31 Dec 2011 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/31/367620.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367620.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/31/367620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367620.html</trackback:ping><description><![CDATA[<div><div id="xvh" style="outline-style: none; outline-width: initial; outline-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 8px; margin-left: 0px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 22px; "><h2>创业公司应该如何招人？</h2></div><div xu"="" style="outline-style: none; outline-width: initial; outline-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; height: 1px; width: 632px; border-top-style: solid; border-top-width: 3px; border-top-color: #dddddd; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #dddddd; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 22px; "></div><div id="xwg" style="outline-style: none; outline-width: initial; outline-color: initial; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #dddddd; margin-top: 0px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 22px; "><div id="aa-1091" style="outline-style: none; outline-width: initial; outline-color: initial; margin-top: 6px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; position: relative; border-image: initial; "><div style="outline-style: none; outline-width: initial; outline-color: initial; "><h3><a href="http://www.zhihu.com/question/19551593" style="color: #105cb6; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; float: right; height: 25px; width: 25px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 5px; "><img src="http://p1.zhimg.com/73/ae/73ae1de85_s.jpg" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; border-image: initial; float: left; height: 25px; margin-top: 0px; margin-right: 10px; margin-bottom: 5px; margin-left: 0px; width: 25px; border-color: initial; "  alt="" /></a><a href="http://www.zhihu.com/question/19551593" style="color: #105cb6; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">周源</a>&nbsp;<strong title="知乎 001 号员工">，知乎 001 号员工</strong></h3></div><div style="outline-style: none; outline-width: initial; outline-color: initial; font-size: 12px; color: #999999; ">374 票，来自&nbsp;金错刀, ZX, 程非&nbsp;<a id="xbtw" href="http://www.zhihu.com/question/19551593" style="color: #105cb6; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">更多</a></div><div style="outline-style: none; outline-width: initial; outline-color: initial; "><div style="outline-style: none; outline-width: initial; outline-color: initial; ">其实从 08 年到现在，我一直想这事能不能有点窍门，或者是实用的方法，结论是几乎没有。<br /><br />我用过的大家都用的方法：<br /><br /><ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 20px; "><li>在水木上发贴子（有点效果）<br /></li><li>在蓝色理想上发贴子（无效）<br /></li><li>在技术邮件组里发贴子（无效）</li><li>买 51job/智联 最便宜的服务（有点效果）</li><li>给所有可以想到的人打电话，请他们推荐（无效）<br /></li><li>给所有和你讨论过创业，喝过点小酒的人打电话（无效）<br /></li><li>约前同事私下谈（有效）<br /></li></ul><br />我用过的大家可能没有用的方法：<br /><br /><ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 20px; "><li>上 twitter，看 XXX 的 follower，一个一个看，看他们的 twitter，博客，Google Reader 分享，想办法搞到邮件，联系，半夜电话骚扰。<br /></li><li>上豆瓣，前端后端挑几本重量级的书，去找想看，看过，正在看这本书的人，一个一个看，看他们的活动，博客，Google Reader 分享，想办法搞到邮件，联系，半夜电话骚扰。<br /></li><li>找同事，问他们都看什么技术博客，想办法搞到邮件，联系，半夜电话骚扰。<br /></li></ul><br />谈几点体会：<br /><br /><strong>不要太指望周围的人</strong><br /><br />从社招和校园招聘筛选初级人才的方法不适合创业公司，所以创业者只能靠自己去当猎头，从你周围的人，同学，朋友，和接触过的公司员工开始。<br /><br />这是事实，也是陷阱。周围的人在能力上恰好满足创业需求的可能极低，人情债又超高，对方其实很勉强，但你却臆想他完全胜任，动之以情拉入伙，结果就是撑不了多久，单纯靠交情为纽带，很快就会透支得一干二净。<br /><br /><strong>别以为人人都想创业</strong><br /><br />我在招人的过程中遇到过很多很聪明的人，也遇到过很多独特的人，但到了最后一刻，他们会犹豫，把创业视为机会者，会自己鼓励自己，但问题是太多的人实际上都只看到了创业风险的一面，选择时会倾向于规避风险。<br /><br />还有，即使是有能力的心有梦想者，也会有很多的实际情况，为知乎招人时，有人家里有重病患者，无法从事需要加班的工作，有人无法换城市，有人自由习惯了，有时候，他们和你通电话，只是想知道你正在做的事情。</div></div></div></div></div><img src ="http://www.blogjava.net/fastzch/aggbug/367620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-31 10:24 <a href="http://www.blogjava.net/fastzch/archive/2011/12/31/367620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]自定义UITableView</title><link>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 29 Dec 2011 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367465.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367465.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367465.html</trackback:ping><description><![CDATA[<div><div><div>原文地址： http://blog.sina.com.cn/s/blog_7e3132ca0100wyls.html<br /></div>在XCode对应头文件中修改该类所继承的父类：</div><div>@interface TableViewController:UIViewController &lt;UITableViewDataSource, UITableViewDelegate&gt;<br />{<br />}</div><div>在对应的.m文件中添加如下代码：</div><div><div>@implementation TableViewController</div></div><div>{<br />UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0,320,460) style:UITableViewStylePlain];<br />tableView.dataSource = self;<br />tableView.delegate = self;<br />[self.view addSubview:tableView];</div><div>}</div><div>这样就在view上添加了一个tableView，但其样式是默认的，其中的内容也是空白的，而且此时是无法运行的，因为在头文件中添加了UITableViewDataSource和UITableViewDelegate两个类，所以必须设置一些自定义tableView样式的方法，下面列举了一些相关的方法：</div><div></div><div>设置Cell高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置SectionHeader高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section</div><div></div><div></div><div>设置SectionFooter高度：</div><div>-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section</div><div></div><div></div><div>设置Section数目：</div><div>-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView</div><div></div><div>&nbsp;</div><div>设置SectionHeader内容：</div><div>-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{</div><div></div><div></div><div>设置各个Section中的Cell个数：&nbsp;</div><div>-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section</div><div></div><div></div><div>设置Cell内容：&nbsp;</div><div>-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath</div><div>&nbsp;</div><div></div><div></div><div>设置Cell行缩进量：</div><div>-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置Cell被选中响应前动作(例如：可用以判断选中的Cell,来阻止其响应）</div><div>-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath</div><div></div><div></div><div>设置Cell选中触发响应：</div><div>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath</div></div><img src ="http://www.blogjava.net/fastzch/aggbug/367465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-29 09:12 <a href="http://www.blogjava.net/fastzch/archive/2011/12/29/367465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Xcode分析CrashLog的方法</title><link>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Wed, 28 Dec 2011 04:24:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/367403.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/367403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/367403.html</trackback:ping><description><![CDATA[<h1 class="entry-title" style="border-top-width: 0px; clear: both; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: bold 21px/1.3em 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; vertical-align: baseline; text-transform: none; color: rgb(0,0,0); text-indent: 0px; padding-top: 0px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">&nbsp;</h1>
<div class="entry-content" style="border-top-width: 0px; clear: both; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; word-spacing: 0px; font: 16px/24px Georgia, 'Bitstream Charter', serif; vertical-align: baseline; text-transform: none; color: rgb(51,51,51); text-indent: 0px; padding-top: 12px; white-space: normal; letter-spacing: normal; background-color: rgb(255,255,255); border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial; orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">原文地址：<a href="http://www.acwind.net/blog/?p=1090">http://www.acwind.net/blog/?p=1090</a><br /><br />Bug是永远伴随着程序员们的东西，各种各样的情况造成程序crash掉也是家常便饭。Windows下的很多大型软件在崩溃的时候，都会弹出提示框，询问用户是否将crash的信息发送到软件厂商，以供软件开发商debug。App store中的软件也有这个功能，用户在使用软件的时候，如果程序崩溃，错误信息会发送到Apple的服务器中，软件的开发者们可以很方便在后台获得自己程序的crash log，供自己调试。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">但随之而来的问题是，我们收到的程序崩溃调试信息多半是汇编语言一样的堆栈代码，同时这些信息并不是在我们debug的时候产生，所以看到这一串crash log的天书，常常无可奈何。Xcode很好的解决了这一问题，它所提供的Orgainzer分析器加上symbolicatecrash﻿，可以分析二进制文件以及源代码和crashlog之间的连接，直接找出源程序中出错的代码行。方法网上到处是，本文不讨论。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">但是如果使用symbolicatecrash﻿无法定位到出错的代码行的话，怎么整呢？有一个办法，如下：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">首先查看crash log中的崩溃线程，假如是这样的：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">Thread 0 Crashed:<br />0 &nbsp; libobjc.A.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; vertical-align: baseline; padding-top: 0px; white-space: pre; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial"> </span>0x00003ec0 objc_msgSend + 24<br />1 &nbsp; MyApp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;0x000036d2 0&#215;1000 + 9938﻿</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">我们得到了用户发生崩溃情况的内存地址：0x000036d2﻿</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">然后回到我们应用程序的build目录，目录下一定要包含MyApp.app 和MyApp.app.dSYM两个文件。</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">在控制台使用dwarfdump命令，解析出内存地址，如：&nbsp;</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">dwarfdump &#8211;lookup 0x000036d2 &#8211;arch armv6 MyApp.app.dSYM</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">输出信息如下：</p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial"><img title="dwarfdump.jpg" style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial" height="149" alt="dwarfdump.jpg" src="http://www.acwind.net/blog/wp-content/uploads/2010/06/dwarfdump.jpg" width="534" border="0" /></p>
<p style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px 0px 24px; vertical-align: baseline; padding-top: 0px; background-color: transparent; border-right-width: 0px; background-origin: initial; background-clip: initial; border-image: initial">直接定位到代码的出错行，Cool！</p></div><img src ="http://www.blogjava.net/fastzch/aggbug/367403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-28 12:24 <a href="http://www.blogjava.net/fastzch/archive/2011/12/28/367403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转] Objective-C内存管理教程和原理剖析口诀与范式</title><link>http://www.blogjava.net/fastzch/archive/2011/12/01/365258.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Thu, 01 Dec 2011 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/12/01/365258.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/365258.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/12/01/365258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/365258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/365258.html</trackback:ping><description><![CDATA[<span  style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: normal; ">
<table width="100%" class="Framework" cellspacing="0" cellpadding="0" style="background-color: #eeeeee; ">
    <tbody>
        <tr>
            <td class="MainCell" width="100%" style="font-size: 12px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; background-color: white; vertical-align: top; ">
            <div id="main">
            <div class="post" style="border-left-color: #cccccc; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-bottom: 28px; ">
            <div class="posthead" style="background-color: #eeeeee; background-image: url(http://www.cnblogs.com/Skins/HabaHaba/images/PostHeaderBg.gif); padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; color: #444444; font-size: 9px; background-position: 50% 100%; background-repeat: repeat no-repeat; ">
            <h2 style="margin-top: 0px; font-size: 13px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a id="ctl03_TitleUrl" class="singleposttitle" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html" style="color: #223355; text-decoration: none; ">iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式</a></h2>
            Posted on 2010-03-08 00:35&nbsp;<a href="http://www.cnblogs.com/VinceYuan/" style="color: #223355; text-decoration: none; ">Vince Yuan</a>&nbsp;阅读(2331)&nbsp;<a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html#commentform" style="color: #223355; text-decoration: none; ">评论(1)</a>&nbsp;<a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html#" rel="nofollow" style="color: #223355; text-decoration: none; ">编辑</a>&nbsp;<a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html#" style="color: #223355; text-decoration: none; ">收藏</a>&nbsp;<img src="http://www.cnblogs.com/VinceYuan/aggbug/1680492.html?type=1&amp;webview=1" width="1px" height="1px" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /></div>
            <div class="postbody" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; margin-bottom: 14px; font-size: 13px; line-height: 1.5; ">
            <div id="cnblogs_post_body">
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">版权声明</span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">此文版权归作者</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">Vince Yuan (vince.yuan#gmail.com)</font></span><span style="font-size: 13px; font-family: 宋体; ">所有。欢迎非营利性转载，转载时必须包含原始链接</span><span lang="EN-US" style="font-size: 13px; "><a href="http://vinceyuan.cnblogs.com/" target="_blank" style="color: #1d58d1; text-decoration: none; "><font face="Calibri">http://vinceyuan.cnblogs.com</font></a></span><span style="font-size: 13px; font-family: 宋体; ">，且必须包含此版权声明的完整内容。</span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; "></span><span style="font-size: 13px; font-family: 宋体; "></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; "></span>&nbsp;</p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span style="font-size: 13px; font-family: 宋体; ">版本</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">&nbsp;1.1<span style="font-size: 13px; ">&nbsp;</span></font></span><span style="font-size: 13px; font-family: 宋体; ">发表于</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">2010-03-08</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; ">&nbsp;</p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">二</span><font face="Calibri">&nbsp;</font><span style="font-size: 13px; font-family: 宋体; ">口诀与范式</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 21.25pt; margin-bottom: 0pt; text-indent: -21.25pt; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">口诀。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">谁创建，谁释放（类似于&#8220;谁污染，谁治理&#8221;）。如果你通过</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">、</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">new</font></span><span style="font-size: 13px; font-family: 宋体; ">或</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">copy</font></span><span style="font-size: 13px; font-family: 宋体; ">来创建一个对象，那么你必须调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">或</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">。换句话说，不是你创建的，就不用你去释放。</span><span lang="EN-US" style="font-size: 13px; "><br />
            </span><span style="font-size: 13px; font-family: 宋体; ">例如，你在一个函数中</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">生成了一个对象，且这个对象只在这个函数中被使用，那么你必须在这个函数中调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">或</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">。如果你在一个</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">class</font></span><span style="font-size: 13px; font-family: 宋体; ">的某个方法中</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">一个成员对象，且没有调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">，那么你需要在这个类的</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法中调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">；如果调用了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">，那么在</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法中什么都不需要做。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">除了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">alloc</font></span><span style="font-size: 13px; font-family: 宋体; ">、</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">new</font></span><span style="font-size: 13px; font-family: 宋体; ">或</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">copy</font></span><span style="font-size: 13px; font-family: 宋体; ">之外的方法创建的对象都被声明了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">1.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">谁</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">，谁</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">。只要你调用了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">，无论这个对象是如何生成的，你都要调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">。有时候你的代码中明明没有</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">，可是系统会在默认实现中加入</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">。不知道为什么苹果公司的文档没有强调这个非常重要的一点，请参考范式</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">2.7</font></span><span style="font-size: 13px; font-family: 宋体; ">和第三章。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 21.25pt; margin-bottom: 0pt; text-indent: -21.25pt; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">范式。</span><span lang="EN-US" style="font-size: 13px; "><br />
            </span><span style="font-size: 13px; font-family: 宋体; ">范式就是模板，就是依葫芦画瓢。由于不同人有不同的理解和习惯，我总结的范式不一定适合所有人，但我能保证照着这样做不会出问题。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">创建一个对象。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj1 = [[ClassA alloc] init];</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">创建一个</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">的对象。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj1 = [[[ClassA alloc] init] autorelease];</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">Release</font></span><span style="font-size: 13px; font-family: 宋体; ">一个对象后，立即把指针清空。（顺便说一句，</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">一个空指针是合法的，但不会发生任何事情）</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj1 release];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">obj1 = nil;</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.4</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">指针赋值给另一个指针。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *obj2 = obj1;</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj2 retain];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">//do something</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[obj2 release];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">obj2 = nil;</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.5</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">在一个函数中创建并返回对象，需要把这个对象设置为</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassA *Func1()</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;</span>ClassA *obj = [[[ClassA alloc]init]autorelease];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;</span>return obj;</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.6</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">在子类的</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法中调用基类的</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法</span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">-(void) dealloc</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&#8230;</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>[super dealloc];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 49.6pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">在一个</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">class</font></span><span style="font-size: 13px; font-family: 宋体; ">中创建和使用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">。</span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.1</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">声明一个成员变量。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">ClassB *objB;</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.2</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">声明</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">，加上</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">retain</font></span><span style="font-size: 13px; font-family: 宋体; ">参数。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@property (retain) ClassB* objB;</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.3</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">定义</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">。（</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">的默认实现请看第三章）</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.2pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@synthesize objB;</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.4</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">除了</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法以外，始终用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">.</font></span><span style="font-size: 13px; font-family: 宋体; ">操作符的方式来调用</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">self.objB&nbsp;</font></span><span style="font-size: 13px; font-family: 宋体; ">或者</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">objA.objB</font></span></p>
            <p class="MsoListParagraph" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.5</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">在</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">dealloc</font></span><span style="font-size: 13px; font-family: 宋体; ">方法中</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">这个成员变量。</span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63.5pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">[objB release];</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">示例代码如下（详细代码请参考附件中的</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">memman-property.m</font></span><span style="font-size: 13px; font-family: 宋体; ">，你需要特别留意对象是在何时被销毁的。）：</span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@interface ClassA : NSObject</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ClassB* objB;</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@property (retain) ClassB* objB;</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@end</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@implementation ClassA</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@synthesize objB;</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">-(void) dealloc</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>[objB release];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>[super dealloc];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">@end</font></span></p>
            <p class="MsoListParagraph" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 70.9pt; margin-bottom: 0pt; text-indent: -1cm; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><span style="font-size: 13px; "><font face="Calibri">2.7.6</font><span style="font-size: 13px; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 13px; font-family: 宋体; ">给这个</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">property</font></span><span style="font-size: 13px; font-family: 宋体; ">赋值时，有手动</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">release</font></span><span style="font-size: 13px; font-family: 宋体; ">和</span><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">autorelease</font></span><span style="font-size: 13px; font-family: 宋体; ">两种方式。</span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">void funcNoAutorelease()</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ClassB *objB1 = [[ClassB alloc]init];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ClassA *objA = [[ClassA alloc]init];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>objA.objB = objB1;</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>[objB1 release];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>[objA release];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">void funcAutorelease()</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">{</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ClassB *objB1 = [[[ClassB alloc]init] autorelease];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ClassA *objA = [[[ClassA alloc]init] autorelease];</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri"><span style="font-size: 13px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>objA.objB = objB1;</font></span></p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 63pt; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span lang="EN-US" style="font-size: 13px; "><font face="Calibri">}</font></span></p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; ">&nbsp;</p>
            <p class="MsoNormal" align="left" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; text-align: left; ">&nbsp;</p>
            <p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0pt; text-indent: 0px; font-size: 13px; line-height: 19px; "><span style="font-size: 13px; font-family: 宋体; ">示例代码文件链接：</span><span lang="EN-US" style="font-size: 13px; "><a href="http://files.cnblogs.com/VinceYuan/objective-c-memman.zip" target="_blank" style="color: #1d58d1; text-decoration: none; "><font face="Calibri">http://files.cnblogs.com/VinceYuan/objective-c-memman.zip</font></a></span></p>
            </div>
            </div>
            </div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</span>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/fastzch/aggbug/365258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-12-01 09:25 <a href="http://www.blogjava.net/fastzch/archive/2011/12/01/365258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MAC上查看Adobe AIR的版本</title><link>http://www.blogjava.net/fastzch/archive/2011/10/09/360246.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sun, 09 Oct 2011 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/10/09/360246.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/360246.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/10/09/360246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/360246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/360246.html</trackback:ping><description><![CDATA[<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-size: 1.025em; line-height: 1.462; margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: #444444; font-family: Arial, Helvetica; font-style: normal; font-variant: normal; letter-spacing: normal; orphans: 2; text-align: text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; ">MAC上看个Adobe AIR的版本没想到如此复杂，备忘一下：</p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-size: 1.025em; line-height: 1.462; margin-top: 0px; padding-bottom: 1px; margin-bottom: 1.2em; color: #444444; font-family: Arial, Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; "><strong>M</strong><strong>ac OS X</strong></p>
<ul style="list-style-type: disc; margin-left: 2em !important; padding-left: 2.5ex; margin-top: -8px; margin-bottom: 1.35em; color: #444444; font-family: Arial, Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 15px; orphans: 2; text-align: text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff; ">
    <li id="" style="line-height: 1.25em; font-size: 1.025em; padding-bottom: 0.5em; "><span id="">Open the<span class="apple-converted-space">&nbsp;</span></span><span id="">/Library/Frameworks/Adobe AIR.framework/Versions/1.0/Resources/Info.plist</span><span class="apple-converted-space">&nbsp;</span>text file and locate<span class="apple-converted-space">&nbsp;the<span class="apple-converted-space">&nbsp;</span></span>&lt;key&gt;CFBundleVersion&lt;/key&gt;<span id="">entry. The corresponding string entry represents the version of AIR, for example:<span class="apple-converted-space">&nbsp;</span></span>&lt;string&gt;1.5.3.9130&lt;/string&gt;&nbsp;</li>
</ul>
<div><font  color="#444444" face="Arial, Helvetica"><span  style="font-size: 12px; line-height: 15px;">原文地址：</span></font></div>
<div><font  color="#444444" face="Arial, Helvetica"><span  style="font-size: 12px; line-height: 15px;"><a href="http://kb2.adobe.com/cps/407/kb407625.html">http://kb2.adobe.com/cps/407/kb407625.html</a></span></font></div>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/fastzch/aggbug/360246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-10-09 09:19 <a href="http://www.blogjava.net/fastzch/archive/2011/10/09/360246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android Media Player 深入观察</title><link>http://www.blogjava.net/fastzch/archive/2011/08/06/355906.html</link><dc:creator>Robin's Programming World</dc:creator><author>Robin's Programming World</author><pubDate>Sat, 06 Aug 2011 00:36:00 GMT</pubDate><guid>http://www.blogjava.net/fastzch/archive/2011/08/06/355906.html</guid><wfw:comment>http://www.blogjava.net/fastzch/comments/355906.html</wfw:comment><comments>http://www.blogjava.net/fastzch/archive/2011/08/06/355906.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fastzch/comments/commentRss/355906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fastzch/services/trackbacks/355906.html</trackback:ping><description><![CDATA[1，某些agent不能在同一个流（注意是同一个流）里面支持两种不同的EQ，具体情况如下：
<div>&nbsp;&nbsp;&nbsp;&nbsp;A. Open core，stagefright等agent不支持同时存在join stereo 和 stereo两种类型的音乐数据，否则抛出 onCompeletion 事件。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;B. QuickTime支持得很好，没问题。</div>
<div><br />
</div>
<div>2，Media Player用流数据的话，如果超过5秒种没有任何数据写入，便会抛出broken pipe异常，这个也是很让人费解的，在网络不好时，常常超过5秒得不到数据。</div>
<div><br />
</div>
<div>3，Android 2.3.3中，低于128K的音乐数据需要很长时间prepare，如果是一个16K的音乐数据，需要超过120秒，据观察，至少需要 250,000 bytes以上数据才能使其prepared. 或许这是为了更好的播放体验在考虑，但是有时候似乎适得其反。</div>
<div><br />
</div>
<div>4，Android 2.2中，低于56K数据的音乐，用流播放时，getCurrentPosition数据不准确，通常播了一秒，这个position只走了400－700ms（依bitrate不同而有所区别）。&nbsp;</div>
<div><br />
</div>
<div>另：ImageView 不支持u.s. web coated (SWOP) color workflow。不管是你放在drawable中，用BitmapFactory去decode，都无法支持。</div>
<div>&nbsp; &nbsp; 其实似乎整个Java都不支持，这个比较奇怪！这可是很流行的一种格式呀！做Java的人的杯具！</div><img src ="http://www.blogjava.net/fastzch/aggbug/355906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fastzch/" target="_blank">Robin's Programming World</a> 2011-08-06 08:36 <a href="http://www.blogjava.net/fastzch/archive/2011/08/06/355906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>