<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iPhoneGeek 爱疯极客 &#187; 开源项目</title>
	<atom:link href="http://www.iphone-geek.cn/tag/%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iphone-geek.cn</link>
	<description>iPhone 新闻，编程，技巧与提示，代码，教程</description>
	<lastBuildDate>Thu, 08 Dec 2011 01:18:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>cocos2d-iphone 0.99.5 Xcode 静态库模板</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos2d-iphone-0-99-5-xcode-%e9%9d%99%e6%80%81%e5%ba%93%e6%a8%a1%e6%9d%bf</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos2d-iphone-0-99-5-xcode-%e9%9d%99%e6%80%81%e5%ba%93%e6%a8%a1%e6%9d%bf#comments</comments>
		<pubDate>Sun, 27 Feb 2011 03:29:19 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[图形图像]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=1132</guid>
		<description><![CDATA[最近一个项目需要用到opengles，由于实在没有时间无法完成自己的引擎，因此开始对cocos2d-iphone引擎进行了研究。经过研究发现一个问题，其模板生成的项目每次都会把整个cocos2d的源代码拷贝进新项目中，这样每次cocos2d-iphone进行更新时都会带来麻烦，而且如果多个项目使用cocos2d-iphone，非常的不方便。我在网上搜索了一下，发现了了这个网站，介绍了怎样将cocos2d-iphone编译成静态库的方法，与我的想法不谋而合。不过该网站中的模板只适用于0.99.4，于是我修改了一下，让其可以运行于0.99.5。下面是主要步骤：
1. 下载cocos2d-iphone 0.99.5 template模板。
2. 解压到/$HOME/Library/Application Support/Developer/Shared/Xcode下
3. 下载cocos2d-iphone 0.99.5，解压到你想要的地方。
3. 在Xcode Preferences中找到Source Tree，输入新变量COCOS2D_SOURCE，让其指向cocos2d-iphone 0.99.5的源代码处。
这样，下次你打开Xcode，你就可以使用我的模板创建cocos2d项目了（注意不要安装随cocos2d-iphone下载的模板），以后每次cocos2d-iphone进行更新，你仅仅需要修改COCOS2D_SOURCE变量（当然前提是cocos2d-iphone的编程接口没有改变）。
]]></description>
			<content:encoded><![CDATA[<p>最近一个项目需要用到opengles，由于实在没有时间无法完成自己的引擎，因此开始对cocos2d-iphone引擎进行了研究。经过研究发现一个问题，其模板生成的项目每次都会把整个cocos2d的源代码拷贝进新项目中，这样每次cocos2d-iphone进行更新时都会带来麻烦，而且如果多个项目使用cocos2d-iphone，非常的不方便。我在网上搜索了一下，发现了了<a href="http://www.learn-cocos2d.com/">这个</a>网站，介绍了怎样将cocos2d-iphone编译成静态库的方法，与我的想法不谋而合。不过该网站中的模板只适用于0.99.4，于是我修改了一下，让其可以运行于0.99.5。下面是主要步骤：<br class="spacer_" /><br />
1. 下载<a href="http://www.iphone-geek.cn/wp-content/uploads/2011/02/cocos2d-iphone-0.99.5-template.zip">cocos2d-iphone 0.99.5 template</a>模板。</p>
<p>2. 解压到/$HOME/Library/Application Support/Developer/Shared/Xcode下</p>
<p>3. 下载cocos2d-iphone 0.99.5，解压到你想要的地方。</p>
<p>3. 在Xcode Preferences中找到Source Tree，输入新变量COCOS2D_SOURCE，让其指向cocos2d-iphone 0.99.5的源代码处。<br class="spacer_" /><br />
这样，下次你打开Xcode，你就可以使用我的模板创建cocos2d项目了（注意不要安装随cocos2d-iphone下载的模板），以后每次cocos2d-iphone进行更新，你仅仅需要修改COCOS2D_SOURCE变量（当然前提是cocos2d-iphone的编程接口没有改变）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos2d-iphone-0-99-5-xcode-%e9%9d%99%e6%80%81%e5%ba%93%e6%a8%a1%e6%9d%bf/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cocos 2d基本概念</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos-2d%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos-2d%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5#comments</comments>
		<pubDate>Fri, 28 Jan 2011 08:10:26 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[图形图像]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=1119</guid>
		<description><![CDATA[开发cocos2d程序前有必要对一些基本概念进行介绍：


场景（Scenes）
主控器（Director）
层（Layers）
精灵（Sprites）




场景

场景（通过 CCScene 对象实现）是程序的工作流程中相对独立的部分。有些人可能喜欢称呼其为“屏幕”或“舞台”。你的应用程序可能具有许多场景，但在某刻只能有一个活动的场景。
例如，你的游戏中可能有下列场景：介绍，菜单，第一关，过场一，第二关，过场二，胜利过场，失败过场，高分记录等等。
你可以将每个场景定义成一个独立的程序; 你可以通过某种逻辑将这些场景联系起来（比如当介绍中断或者完成后，就进入菜单场景，第一关成功将进入过场一，而失败则进入失败过场，等等）。



CCScene 是由一个或者多个层（通过 CCLayer 对象实现）组成。场景的外观和行为是通过层来实现的。
CCScene 类家族中还包括一组称为“过渡” （通过 CCTransitionScene 对象实现），它允许你在两个场景之间进行生成一些特殊的过渡效果（比如淡入淡出，滑入效果等等）。
由于场景是 CCNode 的子类，因此可以使用“动作”对场景进行变换。

主控器
CCDirector 是一个负责控制场景变化的元件。
CCDirector 是一个单例对象。它知道当前哪个场景是活动的，它负责处理场景的控制，并允许进行“场景调用”之类的操作（比如在进入另一个场景时，暂停当前场景，并在适当时候返回原始场景）。在CCLayer 要求替换当前场景后，实际上是 CCDirector 进行的场景切换。
另外， CCDirector 还负责OpenGL ES的初始化。

层
CCLayer 拥有整个可进行绘制的区域，并且知道怎样对自身进行绘制。它还可以是半透明的（还可以在某些地方部分或者完全透明），这样可以看到层后的部分。层是对外观和行为进行定义的元件，所以大部分时间我们都说针对 CCLayer 及子类进行编程的。

CCLayer 还是进行事件处理的地方。事件是通过层进行传递直到某些层捕捉并进行处理。
尽管许多程序要求你定义自定义 CCLayer 类，但 cocos2d 提供了一些有用的预定义的层（比如简单的菜单层： CCMenu，颜色层： CCColorLayer， 其他层之间 的多路器：CCMultiplexLayer，等等）。
层还可以包括 CCSprite 对象， CCLabel 对象以及甚至是 CCLayer 对象。
由于层是 CCNode的子类，因此可以使用“动作”对场景进行变换。

精灵
Cocos2d 的精灵与其他程序库描述的精灵一样，是一个可以进行移动，旋转，大小变化，动画等操作的2D图像。
精灵（通过 CCSprite 类实现）可以拥有其它精灵作为其子成员。当一个父成员进行变换时，其所有子成员也将同时进行变换。
由于精灵是 CCNode的子类，因此可以使用“动作”对场景进行变换。
]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">开发cocos2d程序前有必要对一些基本概念进行介绍：</p>
<p><br class="spacer_" /></p>
<ul>
<li>场景（Scenes）</li>
<li>主控器（Director）</li>
<li>层（Layers）</li>
<li>精灵（Sprites）</li>
</ul>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<p><br class="spacer_" /><br />
<span id="more-1119"></span></p>
<h2>场景</h2>
<p><br class="spacer_" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">场景（通过 <strong>CCScene </strong>对象实现）是程序的工作流程中相对独立的部分。有些人可能喜欢称呼其为“屏幕”或“舞台”。你的应用程序可能具有许多场景，但在某刻只能有一个活动的场景。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">例如，你的游戏中可能有下列场景：<strong>介绍，菜单，第一关，过场一，第二关，过场二，胜利过场，失败过场，高分记录</strong>等等。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">你可以将每个场景定义成一个独立的程序; 你可以通过某种逻辑将这些场景联系起来（比如当<strong>介绍</strong>中断或者完成后，就进入<strong>菜单</strong>场景，<strong>第一关</strong>成功将进入<strong>过场一</strong>，而失败则进入<strong>失败过场</strong>，等等）。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: center; "><a style="color: #0088cc; text-decoration: none; padding: 0px; margin: 0px;" title="prog_guide:scenes.png" href="http://www.cocos2d-iphone.org/wiki/lib/exe/detail.php/prog_guide:scenes.png?id=prog_guide%3Abasic_concepts"><img class="aligncenter" style="margin-top: 3px; margin-bottom: 3px; padding: 0px;" src="http://www.cocos2d-iphone.org/wiki/lib/exe/fetch.php/prog_guide:scenes.png" alt="" width="576" height="128" /></a></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;"><strong>CCScene </strong>是由一个或者多个层（通过 <strong>CCLayer</strong> 对象实现）组成。场景的外观和行为是通过层来实现的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">CCScene 类家族中还包括一组称为“过渡” （通过 CCTransitionScene 对象实现），它允许你在两个场景之间进行生成一些特殊的过渡效果（比如淡入淡出，滑入效果等等）。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">由于场景是 CCNode 的子类，因此可以使用“动作”对场景进行变换。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<h2>主控器</h2>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">CCDirector 是一个负责控制场景变化的元件。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">CCDirector 是一个单例对象。它知道当前哪个场景是活动的，它负责处理场景的控制，并允许进行“场景调用”之类的操作（比如在进入另一个场景时，暂停当前场景，并在适当时候返回原始场景）。在CCLayer 要求替换当前场景后，实际上是 CCDirector 进行的场景切换。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">另外， CCDirector 还负责OpenGL ES的初始化。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<h2>层</h2>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">CCLayer 拥有整个可进行绘制的区域，并且知道怎样对自身进行绘制。它还可以是半透明的（还可以在某些地方部分或者完全透明），这样可以看到层后的部分。层是对外观和行为进行定义的元件，所以大部分时间我们都说针对 CCLayer 及子类进行编程的。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;"><a style="color: #0088cc; text-decoration: none; padding: 0px; margin: 0px;" title="prog_guide:layers.png" href="http://www.cocos2d-iphone.org/wiki/lib/exe/detail.php/prog_guide:layers.png?id=prog_guide%3Abasic_concepts"><img style="padding: 0px; margin: 3px; border: 0px initial initial;" src="http://www.cocos2d-iphone.org/wiki/lib/exe/fetch.php/prog_guide:layers.png" alt="" /></a></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">CCLayer 还是进行事件处理的地方。事件是通过层进行传递直到某些层捕捉并进行处理。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">尽管许多程序要求你定义自定义 <strong>CCLayer </strong>类，但 cocos2d 提供了一些有用的预定义的层（比如简单的菜单层： CCMenu，颜色层： CCColorLayer， 其他层之间 的多路器：CCMultiplexLayer，等等）。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">层还可以包括 CCSprite 对象， CCLabel 对象以及甚至是 <strong>CCLayer </strong>对象。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">由于层是 CCNode的子类，因此可以使用“动作”对场景进行变换。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">
<h2>精灵</h2>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">Cocos2d 的精灵与其他程序库描述的精灵一样，是一个可以进行移动，旋转，大小变化，动画等操作的2D图像。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">精灵（通过 CCSprite 类实现）可以拥有其它精灵作为其子成员。当一个父成员进行变换时，其所有子成员也将同时进行变换。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-size: 1em; line-height: 1.5em; padding: 0px;">由于精灵是 CCNode的子类，因此可以使用“动作”对场景进行变换。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/cocos-2d%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怎样减小png图像文件的尺寸</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e6%80%8e%e6%a0%b7%e5%87%8f%e5%b0%8fpng%e5%9b%be%e5%83%8f%e6%96%87%e4%bb%b6%e7%9a%84%e5%b0%ba%e5%af%b8</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e6%80%8e%e6%a0%b7%e5%87%8f%e5%b0%8fpng%e5%9b%be%e5%83%8f%e6%96%87%e4%bb%b6%e7%9a%84%e5%b0%ba%e5%af%b8#comments</comments>
		<pubDate>Mon, 25 Oct 2010 08:11:42 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[图形图像]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[开源项目]]></category>
		<category><![CDATA[教程]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=1081</guid>
		<description><![CDATA[有两种方法:

直接使用preview打开png文件,然后选择&#8221;另存为&#8221;,覆盖原文件.
使用pngcrush开源软件,这种方法能使png文件更小,但由于pngcrush仅提供源代码需要自己编译.不过这也不是什么问题.

编译pngcrush的步骤:

下载pngcrush
解压
编译.非常简单,使用	
make
进行编译
复制到用户bin目录下
sudo mv pngcrush /usr/local/bin/

使用pngcrush也非常简单,例如:

pngcrush -reduce -brute -d output image.png image.png
就是将图像文件image.png减小尺寸,输出到output目录下.非常遗憾,pngcrsh并不支持目录操作.不过反正有源代码,自己改一下也不是什么大问题吧?
]]></description>
			<content:encoded><![CDATA[<p>有两种方法:</p>
<ol>
<li>直接使用preview打开png文件,然后选择&#8221;另存为&#8221;,覆盖原文件.</li>
<li>使用pngcrush开源软件,这种方法能使png文件更小,但由于pngcrush仅提供源代码需要自己编译.不过这也不是什么问题.</li>
</ol>
<p>编译pngcrush的步骤:</p>
<ol>
<li>下载<a href="http://pmt.sourceforge.net/pngcrush/">pngcrush</a></li>
<li>解压</li>
<li>编译.非常简单,使用	</li>
<blockquote><p>make</p></blockquote>
<li>进行编译</li>
<li>复制到用户bin目录下</li>
<blockquote><p>sudo mv pngcrush /usr/local/bin/</p></blockquote>
</ol>
<p>使用pngcrush也非常简单,例如:</p>
<blockquote><p>
pngcrush -reduce -brute -d output image.png image.png</p></blockquote>
<p>就是将图像文件image.png减小尺寸,输出到output目录下.非常遗憾,pngcrsh并不支持目录操作.不过反正有源代码,自己改一下也不是什么大问题吧?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e6%80%8e%e6%a0%b7%e5%87%8f%e5%b0%8fpng%e5%9b%be%e5%83%8f%e6%96%87%e4%bb%b6%e7%9a%84%e5%b0%ba%e5%af%b8/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open source CoverFlow</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/open-source-coverflow</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/open-source-coverflow#comments</comments>
		<pubDate>Sat, 21 Aug 2010 09:55:00 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[图形图像]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[链接]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=1063</guid>
		<description><![CDATA[使用OpenGL ES的开源Cover Flow，据说有好几个上架程序中都有使用，见http://www.chaosinmotion.com/flowcover.m。
]]></description>
			<content:encoded><![CDATA[<p>使用OpenGL ES的开源Cover Flow，据说有好几个上架程序中都有使用，见<a href="http://www.chaosinmotion.com/flowcover.m">http://www.chaosinmotion.com/flowcover.m</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/open-source-coverflow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone用Expat XML解析器</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/iphone%e7%94%a8expat-xml%e8%a7%a3%e6%9e%90%e5%99%a8</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/iphone%e7%94%a8expat-xml%e8%a7%a3%e6%9e%90%e5%99%a8#comments</comments>
		<pubDate>Fri, 23 Jul 2010 10:29:09 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[基础]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=985</guid>
		<description><![CDATA[xml的解析运用的十分广泛，我以前也介绍过使用ticpp（tinyxml的c++版本）进行简单的xml解析，见跨平台代码分享之三–xml解析器，它是采用DOM进行解析。iPhone SDK中自带的NSXMLParsers也可进行xml解析，但是对于解析web server下载的大型文件时效率不够高，有一个第三方的objective  c expat wrapper 采用expat（SAX方式）进行解析，效率非常高。据有人测试，其效率相对于NSXMLParsers约提高了70-80%。

下面是其下载地址。


]]></description>
			<content:encoded><![CDATA[<p>xml的解析运用的十分广泛，我以前也介绍过使用ticpp（tinyxml的c++版本）进行简单的xml解析，见<a title="跨平台代码分享之三–xml解析器" href="编程/跨平台代码分享之三-–-xml解析器">跨平台代码分享之三–xml解析器</a>，它是采用DOM进行解析。iPhone SDK中自带的NSXMLParsers也可进行xml解析，但是对于解析web server下载的大型文件时效率不够高，有一个第三方的<a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.robbiehanson.com/expat.html');" href="http://www.robbiehanson.com/expat.html">objective  c expat wrapper</a> 采用expat（SAX方式）进行解析，效率非常高。据有人测试，其效率相对于NSXMLParsers约提高了70-80%。</p>
<p><br class="spacer_" /></p>
<p>下面是其<a title="NSXMLParsers" href="http://github.com/zootreeves/iPhoneExpat">下载地址</a>。</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/iphone%e7%94%a8expat-xml%e8%a7%a3%e6%9e%90%e5%99%a8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenGL ES 3D物体加载示例</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/opengl-es-3d%e7%89%a9%e4%bd%93%e5%8a%a0%e8%bd%bd%e7%a4%ba%e4%be%8b</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/opengl-es-3d%e7%89%a9%e4%bd%93%e5%8a%a0%e8%bd%bd%e7%a4%ba%e4%be%8b#comments</comments>
		<pubDate>Wed, 03 Mar 2010 03:50:59 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[图形图像]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=912</guid>
		<description><![CDATA[前几天有位朋友向我询问有关3D物体加载的示例，记得以前看到过一个示例，就找来出来与大家分享：

iPhone Wavefront Obj Loader

]]></description>
			<content:encoded><![CDATA[<p>前几天有位朋友向我询问有关3D物体加载的示例，记得以前看到过一个示例，就找来出来与大家分享：</p>
<p><br class="spacer_" /></p>
<p><a title="iPhone Wavefront Loader" href="http://code.google.com/p/iphonewavefrontloader/">iPhone Wavefront Obj Loader</a></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/opengl-es-3d%e7%89%a9%e4%bd%93%e5%8a%a0%e8%bd%bd%e7%a4%ba%e4%be%8b/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>跨平台游戏引擎开发实录之一 &#8211; 设计文档</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e6%b8%b8%e6%88%8f%e5%bc%95%e6%93%8e%e5%bc%80%e5%8f%91%e5%ae%9e%e5%bd%95%e4%b9%8b%e4%b8%80-%e8%ae%be%e8%ae%a1%e6%96%87%e6%a1%a3</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e6%b8%b8%e6%88%8f%e5%bc%95%e6%93%8e%e5%bc%80%e5%8f%91%e5%ae%9e%e5%bd%95%e4%b9%8b%e4%b8%80-%e8%ae%be%e8%ae%a1%e6%96%87%e6%a1%a3#comments</comments>
		<pubDate>Mon, 18 Jan 2010 06:03:09 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[游戏]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=797</guid>
		<description><![CDATA[我目前正在开发一个跨平台游戏引擎，我准备将整个开发过程通过博客记录下来。欢迎各位朋友提出宝贵意见。

下面是我的设计文档初稿。

项目名称
 
Portable Game Engine （PGE ）

目标

跨平台，希望能支持Windows，Linux，Mac OSX，iPhone，WinCE, Android, Blackberry, Symbian phone 等
简单，尽量简化编程接口
2D和3D
组件可选，以减小目标代码
支持Unicode


组件

核心：游戏主循环，线程，垃圾收集，插件等
图形系统（采用OpenGL或OpenGL ES）：图像（纹理），动画，字体
声音系统（采用OpenAL）：音效，音乐，乐器
资源管理器：压缩/解压，加密/解密
输入：键盘，鼠标及触摸屏（重力感应）
网络：Tcp/ip，Http, UDP
GUI（用户接口）：菜单，文本，按钮，列表框，下拉框，选择框
游戏AI
游戏Physics


开发按阶段进行。第一阶段开发Windows下的OpenGL 2D引擎，然后移植到iPhone下。
]]></description>
			<content:encoded><![CDATA[<p>我目前正在开发一个跨平台游戏引擎，我准备将整个开发过程通过博客记录下来。欢迎各位朋友提出宝贵意见。</p>
<p><br class="spacer_" /></p>
<p>下面是我的设计文档初稿。</p>
<p><br class="spacer_" /></p>
<h3>项目名称</h3>
<p><strong> </strong></p>
<p><strong>Portable Game Engine （PGE ）</strong></p>
<p><br class="spacer_" /></p>
<h3>目标</h3>
<ul>
<li>跨平台，希望能支持Windows，Linux，Mac OSX，iPhone，WinCE, Android, Blackberry, Symbian phone 等</li>
<li>简单，尽量简化编程接口</li>
<li>2D和3D</li>
<li>组件可选，以减小目标代码</li>
<li>支持Unicode</li>
</ul>
<p><br class="spacer_" /></p>
<h3>组件</h3>
<ul>
<li>核心：游戏主循环，线程，垃圾收集，插件等</li>
<li>图形系统（采用OpenGL或OpenGL ES）：图像（纹理），动画，字体</li>
<li>声音系统（采用OpenAL）：音效，音乐，乐器</li>
<li>资源管理器：压缩/解压，加密/解密</li>
<li>输入：键盘，鼠标及触摸屏（重力感应）</li>
<li>网络：Tcp/ip，Http, UDP</li>
<li>GUI（用户接口）：菜单，文本，按钮，列表框，下拉框，选择框</li>
<li>游戏AI</li>
<li>游戏Physics</li>
</ul>
<p><br class="spacer_" /></p>
<p>开发按阶段进行。第一阶段开发Windows下的OpenGL 2D引擎，然后移植到iPhone下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e6%b8%b8%e6%88%8f%e5%bc%95%e6%93%8e%e5%bc%80%e5%8f%91%e5%ae%9e%e5%bd%95%e4%b9%8b%e4%b8%80-%e8%ae%be%e8%ae%a1%e6%96%87%e6%a1%a3/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>跨平台代码分享之七 &#8211; 一个简单的音效引擎</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e4%b8%83-%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e9%9f%b3%e6%95%88%e5%bc%95%e6%93%8e</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e4%b8%83-%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e9%9f%b3%e6%95%88%e5%bc%95%e6%93%8e#comments</comments>
		<pubDate>Wed, 06 Jan 2010 06:18:19 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[基础]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[音频]]></category>
		<category><![CDATA[跨平台]]></category>
		<category><![CDATA[OpenAL]]></category>
		<category><![CDATA[开源项目]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=727</guid>
		<description><![CDATA[游戏都需要一个声音引擎，一般来说，有三种类型：

播放音效。音效一般是比较简短的声音文件。
播放背景音乐。
乐器，音效模拟。

&#160;
本文介绍一个简单跨平台的音效引擎，主要针对第一种类型。实际上，也可以适用于第二种类型，但由于背景音乐文件较大，占用内存较大，所以本文介绍的方法并不是最为有效率的（特别是对于像iPhone之类内存较为紧张的平台，但仍然可用）。可以在本引擎的基础上加以改进，比如采用“流”（streaming）技术。而第三种类型，可能涉及到DSP（数字处理技术），比较复杂，另外在不同平台有一些不同的技术，如Windows下的VST/VSTi，Mac OSX下的AU等，不在本文的讨论范围。
&#160;
本文介绍的音效引擎是基于OpenAL的，并且是我在许多项目中使用的引擎的简化部分（去除错误处理及乐器模拟部分）。
&#160;
有关OpenAL的使用，网上有许多教程，比如：OpenAL编程教程等。iPhone上的OpenAL使用，本网站也有几篇文章。所以这里不再赘述。
&#160;
本引擎的目的，是简化声音播放接口。最简单的情况下可以仅仅使用两条语句，就播放一段音效。而繁复的OpenAL初始化功能等都由引擎自动完成。下例展示了怎样播放一段音效的最为典型的调用：
&#160;
123audio::CSound sound&#40;&#34;sound.wav&#34;&#41;;

sound.play&#40;&#41;;
&#160;
本引擎由三个类和一个公共函数构成。audio::CEngine是引擎的核心部分，它是一个单例类（Singleton)，负责直接与OpenAL接口，用户无需与其打交道。audio::CBuffer类对应于OpenAL中的缓存，通过audio::openAudioData函数打开音效文件，创建内部缓存，用户也无需直接使用。audio::CSound是用户直接使用的类，它提供了诸如play（），stop（），setVolume（）和setPosition（）几个接口函数。如需扩展功能，添加一些其他功能，可以直接加在此类中，并在audio::CEngine中实现。
&#160;
以上三个类可以直接使用在不同平台中。与平台相关的代码，都在audio::openAudioData()中。它的作用是打开不同的声音文件。对于Windows，我使用了一个开源项目库libsndfile，用来打开诸如wav，caf，aiff，flac，ogg等常用音效文件（注意：mp3并未包括其中。由于使用mp3的软件需要支付一定许可证费用，本人也不喜欢使用）。而对于Mac OSX（iPhone），则使用了core audio。这里大家可能会有一个疑问，既然libsndfile也是跨平台的，为什么在iPhone上不使用它呢？确实，libsndfile支持Windows，Linux，Mac OSX，Sun Solaris等平台，而iPhone并不支持ogg等格式，使用libsndfile不正好填补这个空白？是的，我也是这样想的，但是，有两点原因初始我暂时没有使用它：

没有现成的iPhone库。由于libsndfile需要使用makefile由GCC编译（我曾试过使用Xcode编译，没有成功），我也不是这方面的专家。但是，libsndfile在Mac OSX下编译没有问题，所以只需稍作修改，在为iPhone进行编译也不是没有可能的事情。
由于其许可证的限制。libsndfile是基于LGPL的，它要求使用者采用动态连接库，而众所周知，iPhone（官方）是不支持动态链接的。如果使用静态链接，则需要随软件发布源代码或目标代码。其实，这也不是无法克服的，LGPL只要求发布与libsnd相关的目标代码，所以对你的软件并无影响。对吗？

&#160;
本文给出了Windows下和iPhone下的应用。在Windows下使用需要下载OpenAL SDK和libsndfile。为方便编译好的libsndfile随示例程序给出给出。（你需要修改一下VS 项目文件中的有关OpenAL的头文件和库文件路径，另外，在OpenAL include目录中创建一个OpenAL目录，并将.h复制到其下，这样我就不需要修改#include语句了。）
&#160;
示例程序audiolib下载。（项目在test目录下）
]]></description>
			<content:encoded><![CDATA[<p>游戏都需要一个声音引擎，一般来说，有三种类型：</p>
<ol>
<li>播放音效。音效一般是比较简短的声音文件。</li>
<li>播放背景音乐。</li>
<li>乐器，音效模拟。</li>
</ol>
<p>&nbsp;</p>
<p>本文介绍一个简单跨平台的音效引擎，主要针对第一种类型。实际上，也可以适用于第二种类型，但由于背景音乐文件较大，占用内存较大，所以本文介绍的方法并不是最为有效率的（特别是对于像iPhone之类内存较为紧张的平台，但仍然可用）。可以在本引擎的基础上加以改进，比如采用“流”（streaming）技术。而第三种类型，可能涉及到DSP（数字处理技术），比较复杂，另外在不同平台有一些不同的技术，如Windows下的VST/VSTi，Mac OSX下的AU等，不在本文的讨论范围。</p>
<p>&nbsp;</p>
<p>本文介绍的音效引擎是基于OpenAL的，并且是我在许多项目中使用的引擎的简化部分（去除错误处理及乐器模拟部分）。</p>
<p>&nbsp;</p>
<p>有关OpenAL的使用，网上有许多教程，比如：<a href="http://www.devmaster.net/articles/openal-tutorials/lesson1.php">OpenAL编程教程</a>等。iPhone上的OpenAL使用，本网站也有几篇文章。所以这里不再赘述。</p>
<p>&nbsp;</p>
<p>本引擎的目的，是简化声音播放接口。最简单的情况下可以仅仅使用两条语句，就播放一段音效。而繁复的OpenAL初始化功能等都由引擎自动完成。下例展示了怎样播放一段音效的最为典型的调用：</p>
<p>&nbsp;</p>
<div class="codecolorer-container cpp mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">audio<span style="color: #008080;">::</span><span style="color: #007788;">CSound</span> sound<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;sound.wav&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
sound.<span style="color: #007788;">play</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></div></td></tr></tbody></table></div>
<p>&nbsp;</p>
<p>本引擎由三个类和一个公共函数构成。audio::CEngine是引擎的核心部分，它是一个单例类（Singleton)，负责直接与OpenAL接口，用户无需与其打交道。audio::CBuffer类对应于OpenAL中的缓存，通过audio::openAudioData函数打开音效文件，创建内部缓存，用户也无需直接使用。audio::CSound是用户直接使用的类，它提供了诸如play（），stop（），setVolume（）和setPosition（）几个接口函数。如需扩展功能，添加一些其他功能，可以直接加在此类中，并在audio::CEngine中实现。</p>
<p>&nbsp;</p>
<p>以上三个类可以直接使用在不同平台中。与平台相关的代码，都在audio::openAudioData()中。它的作用是打开不同的声音文件。对于Windows，我使用了一个开源项目库<a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a>，用来打开诸如wav，caf，aiff，flac，ogg等常用音效文件（<strong>注意：mp3并未包括其中。由于使用mp3的软件需要支付一定许可证费用，本人也不喜欢使用</strong>）。而对于Mac OSX（iPhone），则使用了core audio。这里大家可能会有一个疑问，既然libsndfile也是跨平台的，为什么在iPhone上不使用它呢？确实，libsndfile支持Windows，Linux，Mac OSX，Sun Solaris等平台，而iPhone并不支持ogg等格式，使用libsndfile不正好填补这个空白？是的，我也是这样想的，但是，有两点原因初始我暂时没有使用它：</p>
<ol>
<li>没有现成的iPhone库。由于libsndfile需要使用makefile由GCC编译（我曾试过使用Xcode编译，没有成功），我也不是这方面的专家。但是，libsndfile在Mac OSX下编译没有问题，所以只需稍作修改，在为iPhone进行编译也不是没有可能的事情。</li>
<li>由于其许可证的限制。libsndfile是基于LGPL的，它要求使用者采用动态连接库，而众所周知，iPhone（官方）是不支持动态链接的。<strong>如果使用静态链接，则需要随软件发布源代码或目标代码。</strong>其实，这也不是无法克服的，LGPL只要求发布与libsnd相关的目标代码，所以对你的软件并无影响。对吗？</li>
</ol>
<p>&nbsp;</p>
<p>本文给出了Windows下和iPhone下的应用。在Windows下使用需要下载<a href="http://connect.creativelabs.com/openal/Downloads/oalinst.zip">OpenAL SDK</a>和<a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a>。为方便编译好的libsndfile随示例程序给出给出。（你需要修改一下VS 项目文件中的有关OpenAL的头文件和库文件路径，另外，在OpenAL include目录中创建一个OpenAL目录，并将.h复制到其下，这样我就不需要修改#include语句了。）</p>
<p>&nbsp;</p>
<p>示例程序<a href="../wp-content/uploads/2010/01/audiolib.zip">audiolib</a>下载。（项目在test目录下）<a href="http://www.iphone-geek.cn/wp-content/uploads/2010/01/audiolib.zip"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e4%b8%83-%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84%e9%9f%b3%e6%95%88%e5%bc%95%e6%93%8e/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Poco C++ for iPhone之一 &#8211; 编译</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/poco-c-for-iphone%e4%b9%8b%e4%b8%80-%e7%bc%96%e8%af%91</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/poco-c-for-iphone%e4%b9%8b%e4%b8%80-%e7%bc%96%e8%af%91#comments</comments>
		<pubDate>Tue, 29 Dec 2009 02:39:58 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[基础]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[跨平台]]></category>
		<category><![CDATA[开源项目]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[代码片段]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=554</guid>
		<description><![CDATA[Poco C++是一个强大的跨平台C++库，你可以在iPhone程序中使用它，如果：

你打算使你的程序跨平台。
你喜欢使用C++或希望使用Poco C++中的功能如：XML，Zip等。

&#160;
目前，最新Poco C++版本为1.3.6P1，根据文档，它可以编译为iPhone静态库。但是我试用了一下，无法使用在iPhone Xcode项目中链接，不知何故。所以我自己创建了下列Xcode项目：

Poco Foundation
Poco Util
Poco Net
Poco XML
Poco Zip

&#160;
另外，由于Crypto，Data，NetSSL_OpenSSL库需要外部库而且目前我不需要使用，所以没有包括。另外我增加了一个目录iPhoneSamples，它目前包括了一个示例程序HelloPoco，演示了怎样在iPhone项目中使用Poco C++库（此演示程序十分简单，它调用Poco中的UUID功能，产生一个UUID，显示与屏幕上）。下面是包括了此展示程序以及各Xcode文件的Poco包的下载：
&#160;
poco-1.3.6p1
]]></description>
			<content:encoded><![CDATA[<p>Poco C++是一个强大的跨平台C++库，你可以在iPhone程序中使用它，如果：</p>
<ol>
<li>你打算使你的程序跨平台。</li>
<li>你喜欢使用C++或希望使用Poco C++中的功能如：XML，Zip等。</li>
</ol>
<p>&nbsp;</p>
<p>目前，最新Poco C++版本为1.3.6P1，根据文档，它可以编译为iPhone静态库。但是我试用了一下，无法使用在iPhone Xcode项目中链接，不知何故。所以我自己创建了下列Xcode项目：</p>
<ul>
<li>Poco Foundation</li>
<li>Poco Util</li>
<li>Poco Net</li>
<li>Poco XML</li>
<li>Poco Zip</li>
</ul>
<p>&nbsp;</p>
<p>另外，由于Crypto，Data，NetSSL_OpenSSL库需要外部库而且目前我不需要使用，所以没有包括。另外我增加了一个目录iPhoneSamples，它目前包括了一个示例程序HelloPoco，演示了怎样在iPhone项目中使用Poco C++库（此演示程序十分简单，它调用Poco中的UUID功能，产生一个UUID，显示与屏幕上）。下面是包括了此展示程序以及各Xcode文件的Poco包的下载：</p>
<p>&nbsp;</p>
<p><a href="http://www.iphone-geek.cn/wp-content/uploads/2009/12/poco-1.3.6.zip">poco-1.3.6p1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/poco-c-for-iphone%e4%b9%8b%e4%b8%80-%e7%bc%96%e8%af%91/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>跨平台代码分享之四 – 开源跨平台C++库介绍</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e5%9b%9b-%e2%80%93-%e5%bc%80%e6%ba%90%e8%b7%a8%e5%b9%b3%e5%8f%b0c%e5%ba%93%e4%bb%8b%e7%bb%8d</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e5%9b%9b-%e2%80%93-%e5%bc%80%e6%ba%90%e8%b7%a8%e5%b9%b3%e5%8f%b0c%e5%ba%93%e4%bb%8b%e7%bb%8d#comments</comments>
		<pubDate>Wed, 16 Dec 2009 08:09:59 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[基础]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[跨平台]]></category>
		<category><![CDATA[开源项目]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=439</guid>
		<description><![CDATA[做项目时发现一个开源C++库，称为POCO（POrtable COmponents &#8211; 可移植元件），非常方便好用。
&#160;
特性：
&#160;
    * 线程，程序同步及多线程编程高级抽象
    * 流及文件系统访问
    * 共享库将类加载
    * 功能强大的日志和错误报告
    * 安全及加密
    * 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)
    * XML解析 (SAX2 和 DOM) 及生成
    * 配置文件及选项处理
 [...]]]></description>
			<content:encoded><![CDATA[<p>做项目时发现一个开源C++库，称为<a href="http://pocoproject.org/">POCO</a>（POrtable COmponents &#8211; 可移植元件），非常方便好用。</p>
<p>&nbsp;</p>
<h2>特性：</h2>
<p>&nbsp;</p>
<p>    * 线程，程序同步及多线程编程高级抽象<br />
    * 流及文件系统访问<br />
    * 共享库将类加载<br />
    * 功能强大的日志和错误报告<br />
    * 安全及加密<br />
    * 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)<br />
    * XML解析 (SAX2 和 DOM) 及生成<br />
    * 配置文件及选项处理<br />
    * SQL数据库访问(ODBC, MySQL, SQLite)</p>
<p>&nbsp;</p>
<h2>可以运行的平台包括：</h2>
<p>&nbsp;</p>
<p>    * Windows<br />
    * Mac OS X<br />
    * iPhone OS<br />
    * (embedded) Linux<br />
    * HP-UX<br />
    * Tru64<br />
    * Solaris<br />
    * QNX</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/%e8%b7%a8%e5%b9%b3%e5%8f%b0%e4%bb%a3%e7%a0%81%e5%88%86%e4%ba%ab%e4%b9%8b%e5%9b%9b-%e2%80%93-%e5%bc%80%e6%ba%90%e8%b7%a8%e5%b9%b3%e5%8f%b0c%e5%ba%93%e4%bb%8b%e7%bb%8d/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

