<?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>王超 - 博客 BLOG &#187; iphone</title>
	<atom:link href="http://www.wangchao123.com/tag/iphone/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wangchao123.com</link>
	<description>code player 海盗精神 - 他们向往自由，面对大海胸怀宽广，只拿他们想要的，遵守契约，单纯而且机智。</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:05:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>基于Xcode4开发第一个iPhone程序：“Hello World” (转 自 宝玉博客)</title>
		<link>http://www.wangchao123.com/2011/05/12/686</link>
		<comments>http://www.wangchao123.com/2011/05/12/686#comments</comments>
		<pubDate>Thu, 12 May 2011 05:43:40 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=686</guid>
		<description><![CDATA[转自: http://www.cnblogs.com/dotey/archive/2011/05/12/2043939.html 基于Xcode4开发第一个iPhone程序：“Hello World” 项目要求 写一个iPhone程序，在屏幕正中显示文字“Hello Word”，粗体，字体大小26磅，字体颜色红色，有黑色阴影，阴影光源为左上角，偏移1像素，支持设备旋转。 需求分析 在开始之前，我们首先来分析一下项目需求，这是一个非常简单的项目，只要在屏幕上显示一段“Hello World”的文字，当然还有一些附加条件： 对字体、字体颜色、字体大小有要求，有阴影效果 要求文字显示在屏幕正中 支持设备旋转，并且无论设备如何旋转，文字都还是显示在屏幕正中 根据这些需求，我们将从简单到复杂，逐步来实现，分成2步来实现： 在屏幕上显示文字，设置字体和字体大小，让文字显示在屏幕正中心 支持设备旋转，并且保证旋转后文字还是居中状态 产品设计 iPhone4之前的屏幕是320&#215;480，到iPhone4的时候，支持了高清屏，屏幕分辨率变成了640&#215;960。iPhone支持四个方向的旋转的，横屏和竖屏表现略有差异，因为项目需求要求支持屏幕旋转，所以针对横屏和竖屏，界面表现有所差异，简单画一下原型设计图如下： 系统分析和设计 如果我们还没iOS下的开发经验，那么首先需要去查阅一些相关资料，让我们知道如何来开发一个iphone程序。苹果为iOS的开发者提供了一个非常详细和全面的网站：“iOS Developer Center”，网址：http://developer.apple.com/ios。在iOS Dev Center，有所有iOS SDK的类文档、入门文档、各种开发指南、示例代码库等，开发iOS平台的项目，免不了要经常上来查阅一些相关资料。不过比较遗憾的是，目前iOS Dev Center的文档和资料还是英文为主，中文资料较少，对于英文阅读不好的同学是一个考验。 现在，我们从技术角度来分析一下如何实现项目需求。同样一个项目，无疑是有很多种技术方案来实现的，所以我们有必要定一个原则，来帮助我们选择合适的方案，这个原则就是简单实用原则：“我们尽可能采用简单并且实用的技术方案，避免使用复杂的技术方案，把时间和精力浪费在一些华而不实的技巧上面”，本着这个原则，我们来开始对项目需求进行技术方案的选择： 在屏幕上显示特定字体和大小的文字 要在屏幕上显示特定字体和大小的文字，我们需要先看看iOS SDK中是否已经提供了简单实用的方式来显示文字，在iOS Dev Center中，有一篇文章“iOS Human Interface Guidelines”，专门讲解了iOS中用户界面相关的知识，从中我们可以系统的了解iOS的界面构成，各种基本界面元素，并且根据其中的说明，可以找到UILabel控件是最适合我们项目需求的控件，当然也有复杂的技术方案，就是采用在界面上自画的方式，根据简单实用原则，我们就使用UILabel这种iOS自带控件就可以了。 在开始使用UILabel之前，我们需要先来学习了解一下UILabel控件，想要了解UILabel控件的功能，在iOS Dev Center中，找到“UILabel Class Reference”，从中我们可以看到UILabel的介绍和所有属性、方法等详细的说明文档。 文档相当全面，不过对于我们来说，关键还是要去获取项目相关的资料，从文档中，我们可以逐一找到我们显示文字需要的相关属性： text: Label显示的文字，类型为NSString类，也就是本项目需求中要显示的“Hello World”。 textAlignment: 文字在Label内的对其方式，类型为UITextAlignment枚举，在本项目需求中，要求文字在屏幕正中显示，对应的属性值为UITextAlignmentCenter。 font: 文字的字体和大小，类型为UIFont类，也就是本项目需求中要求的：“字体为粗体，字体大小26磅”，对应代码为：[UIFontboldSystemFontOfSize:26]。 textColor: 文字的颜色，类型为UIColor类，也就是本项目需求中要求的：“字体颜色红色”，对应代码为：[UIColor redColor]。 shadowColor: Label文字的阴影颜色，类型为UIColor类，也就是本项目需求中要求的：“有黑色阴影”，对应代码为：[UIColorblackColor]。 shadowOffset: [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-left: 70px; padding-right: 40px; font-size: 10pt; line-height: 19px;">
<h2 style="margin-top: 10px; font-size: 1em;"></h2>
<h2 style="margin-top: 10px; font-size: 1em;">转自: <a href="http://www.cnblogs.com/dotey/archive/2011/05/12/2043939.html">http://www.cnblogs.com/dotey/archive/2011/05/12/2043939.html</a></h2>
<h2 style="margin-top: 10px; font-size: 1em;"><a id="ctl02_TitleUrl" style="color: #0066aa; text-decoration: none;" href="http://www.cnblogs.com/dotey/archive/2011/05/12/2043939.html">基于Xcode4开发第一个iPhone程序：“Hello World”</a></h2>
<div style="font-size: 10pt; line-height: 19px;">
<div id="cnblogs_post_body">
<h2 style="margin-top: 10px; font-size: 1em;">项目要求</h2>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">写一个iPhone程序，在屏幕正中显示文字“Hello Word”，粗体，字体大小26磅，字体颜色红色，有黑色阴影，阴影光源为左上角，偏移1像素，支持设备旋转。</p>
<h2 style="margin-top: 10px; font-size: 1em;">需求分析</h2>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在开始之前，我们首先来分析一下项目需求，这是一个非常简单的项目，只要在屏幕上显示一段“Hello World”的文字，当然还有一些附加条件：</p>
<ul>
<li>对字体、字体颜色、字体大小有要求，有阴影效果</li>
<li>要求文字显示在屏幕正中</li>
<li>支持设备旋转，并且无论设备如何旋转，文字都还是显示在屏幕正中</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">根据这些需求，我们将从简单到复杂，逐步来实现，分成2步来实现：</p>
<ol style="margin-left: 2em;">
<li style="list-style-type: decimal;">在屏幕上显示文字，设置字体和字体大小，让文字显示在屏幕正中心</li>
<li style="list-style-type: decimal;">支持设备旋转，并且保证旋转后文字还是居中状态</li>
</ol>
<h2 style="margin-top: 10px; font-size: 1em;">产品设计</h2>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">iPhone4之前的屏幕是320&#215;480，到iPhone4的时候，支持了高清屏，屏幕分辨率变成了640&#215;960。iPhone支持四个方向的旋转的，横屏和竖屏表现略有差异，因为项目需求要求支持屏幕旋转，所以针对横屏和竖屏，界面表现有所差异，简单画一下原型设计图如下：</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">
<a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242026761.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134341k4b.jpg" alt="201105120238.jpg" width="246" height="478" /></a> <a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241563485.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134341olJ.jpg" alt="201105120238.jpg" width="480" height="246" /></a></p>
<h2 style="margin-top: 10px; font-size: 1em;">系统分析和设计</h2>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">如果我们还没iOS下的开发经验，那么首先需要去查阅一些相关资料，让我们知道如何来开发一个iphone程序。苹果为iOS的开发者提供了一个非常详细和全面的网站：“iOS Developer Center”，网址：<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/devcenter/ios/index.action">http://developer.apple.com/ios</a>。在iOS Dev Center，有所有iOS SDK的类文档、入门文档、各种开发指南、示例代码库等，开发iOS平台的项目，免不了要经常上来查阅一些相关资料。不过比较遗憾的是，目前iOS Dev Center的文档和资料还是英文为主，中文资料较少，对于英文阅读不好的同学是一个考验。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242121310.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/13434303h.jpg" alt="201105111713.jpg" width="640" height="506" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">现在，我们从技术角度来分析一下如何实现项目需求。同样一个项目，无疑是有很多种技术方案来实现的，所以我们有必要定一个原则，来帮助我们选择合适的方案，这个原则就是简单实用原则：“我们尽可能采用简单并且实用的技术方案，避免使用复杂的技术方案，把时间和精力浪费在一些华而不实的技巧上面”，本着这个原则，我们来开始对项目需求进行技术方案的选择：</p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">在屏幕上显示特定字体和大小的文字</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">要在屏幕上显示特定字体和大小的文字，我们需要先看看iOS SDK中是否已经提供了简单实用的方式来显示文字，在iOS Dev Center中，有一篇文章“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40006556-CH1-SW1">iOS Human Interface Guidelines</a>”，专门讲解了iOS中用户界面相关的知识，从中我们可以系统的了解iOS的界面构成，各种基本界面元素，并且根据其中的说明，可以找到UILabel控件是最适合我们项目需求的控件，当然也有复杂的技术方案，就是采用在界面上自画的方式，根据简单实用原则，我们就使用UILabel这种iOS自带控件就可以了。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242049627.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134344MMJ.jpg" alt="201105112127.jpg" width="640" height="461" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在开始使用UILabel之前，我们需要先来学习了解一下UILabel控件，想要了解UILabel控件的功能，在iOS Dev Center中，找到“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UILabel_Class/Reference/UILabel.html%23//apple_ref/doc/uid/TP40006797">UILabel Class Reference</a>”，从中我们可以看到UILabel的介绍和所有属性、方法等详细的说明文档。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242061871.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134344bqp.jpg" alt="201105112035.jpg" width="640" height="461" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">文档相当全面，不过对于我们来说，关键还是要去获取项目相关的资料，从文档中，我们可以逐一找到我们显示文字需要的相关属性：</p>
<ul>
<li><strong>text</strong>: Label显示的文字，类型为NSString类，也就是本项目需求中要显示的“Hello World”。</li>
<li><strong>textAlignment</strong>: 文字在Label内的对其方式，类型为UITextAlignment枚举，在本项目需求中，要求文字在屏幕正中显示，对应的属性值为UITextAlignmentCenter。</li>
<li><strong>font</strong>: 文字的字体和大小，类型为UIFont类，也就是本项目需求中要求的：“字体为粗体，字体大小26磅”，对应代码为：<span style="line-height: 21px; font-family: Menlo; font-size: 14px; color: #3e2280;"><span style="line-height: 21px; color: #000000;">[</span><span style="line-height: 21px; color: #7041a7;">UIFont</span>boldSystemFontOfSize<span style="line-height: 21px; color: #000000;">:</span><span style="line-height: 21px; color: #2f33d5;">26</span><span style="line-height: 21px; color: #000000;">]</span></span>。</li>
<li><strong>textColor</strong>: 文字的颜色，类型为UIColor类，也就是本项目需求中要求的：“字体颜色红色”，对应代码为：<span style="line-height: 21px; font-family: Menlo; font-size: 14px; color: #3e2280;"><span style="line-height: 21px; color: #000000;">[</span><span style="line-height: 21px; color: #7041a7;">UIColor</span> redColor<span style="line-height: 21px; color: #000000;">]</span></span>。</li>
<li><strong>shadowColor</strong>: Label文字的阴影颜色，类型为UIColor类，也就是本项目需求中要求的：“有黑色阴影”，对应代码为：<span style="line-height: 21px; font-family: Menlo; font-size: 14px; color: #3e2280;"><span style="line-height: 21px; color: #000000;">[</span><span style="line-height: 21px; color: #7041a7;">UIColor</span>blackColor<span style="line-height: 21px; color: #000000;">]</span></span>。</li>
<li><strong>shadowOffset</strong>: Label文字阴影的偏移方向和偏移量，类型为CGSize，也就是本项目需求中要求的：“阴影光源为左上角，偏移1像素”，对应代码为：<span style="line-height: 21px; font-family: Menlo; font-size: 14px;">[CGSizeMake(<span style="line-height: 21px; color: #2f33d5;">1</span>, <span style="line-height: 21px; color: #2f33d5;">1</span>)]</span>。</li>
</ul>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">让文字显示在屏幕正中心</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">要让文字显示在屏幕正中心，我们要优先考虑设置UILabel相关属性达到目的的方式，如果没有UILabel相关属性支持，那么我们就必须根据UILabel占的大小和屏幕大小来计算它应该摆放的坐标，从而实现让文字显示在屏幕正中心。在UILabel的文档中，没有发现有属性设置它的坐标，也没有设置对其的属性，这是不是代表UILabel不支持呢？不要忽略一个问题，iOS所用的编程语言是Objective-C，这个一个类似于C语言的很好的支持面向对象特性的语言，面向对象有个很重要的特性叫继承，同样对于UILabel类来说，它是有父类的，也就是UILabel父类支持的属性，UILabel都是支持的，在UILabel文档的首页，我们可以看到UILabel是从UIView继承的，所以我们可以链接到“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html%23//apple_ref/doc/uid/TP40006816">UIView Class Reference</a>”文档。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242045658.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134344vh8.jpg" alt="201105112034.jpg" width="640" height="461" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">从文档中，我们可以找到2个重要属性，用来实现文字显示在屏幕正中：</p>
<ul>
<li><strong>frame</strong>: Label的位置和尺寸属性，类型为CGRect，在本项目需求中，要求显示在屏幕正中，就需要通过Label控件的frame属性的size值，结合主界面的尺寸，计算出x，y坐标值，以保证Label显示在屏幕正中。</li>
<li><strong>autoresizingMask</strong>: 这个属性表示控件在其父容器尺寸发生变化时，它是怎么自动调整其尺寸或上下左右各个方向边距的。</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="line-height: 21px; font-size: 14px; font-weight: bold;">支持屏幕旋转</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">iPhone程序默认不支持屏幕旋转，那么如何让界面支持旋转呢？在iOS Dev Center中，可以找到“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html#//apple_ref/doc/uid/TP40007457-CH101-SW24">View Controller Programming Guide for iOS</a>”，在其中的“Custom View Controllers”一章中专门有一节“Managing a View Controller&#8217;s Interface Orientation”，说明了如何让你的iOS界面支持设备旋转：</p>
<ul>
<li>重写对应的View Controller的“shouldAutorotateToInterfaceOrientation:”方法，在方法中申明支持的方向。</li>
<li>配置对应的View Controller中的View的autoresizingMask属性，以适应因为界面旋转导致的布局变化。在本项目中，项目需求中要求设备在旋转也保证文字居中，利用这个属性，可以实现在界面旋转后，窗体宽度和高度发生变化时，UILabel还能继续居中。</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241577846.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/13434615j.jpg" alt="201105112158.jpg" width="640" height="461" /></a></p>
<h2 style="margin-top: 10px; font-size: 1em;">项目开发</h2>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">熟悉Xcode 4</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">经过前期的准备工作后，现在可以开始基于Xcode4进行实际的项目开发。对于Xcode4，在iOS Dev Center中，找到“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Introduction/Introduction.html">Xcode 4 User Guide</a>”，这是一个专门针对Xcode 4的说明和使用指南，非常详细。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241508016.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134347I67.jpg" alt="201105112350.jpg" width="640" height="461" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在Xcode 4中，整合了原来专门用来编辑Mac或iOS项目界面的Interface Builder软件，“<a style="color: #0066aa; text-decoration: none;" href="http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Introduction/Introduction.html">Xcode 4 User Guide</a>”中专门有一章“Designing User Interfaces in Xcode”来讲述如何在Xcode 4中编辑界面。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242078425.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134347e96.jpg" alt="201105120043.jpg" width="640" height="461" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">创建新项目</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">启动Xcode4后，首先会有一个欢迎窗口，通过它，点击“Create a new Xcode project”，可以直接开始创建项目</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241535210.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134347XoI.jpg" alt="201105112227.jpg" width="640" height="415" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">当然也可以通过菜单或者快捷方式来开始创建新项目</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242084215.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134348wia.jpg" alt="201105112231.jpg" width="640" height="203" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">选择新项目模板</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">为方便生成项目，Xcode4默认提供了几种项目模板：</p>
<ul>
<li><strong>Navigation-based Application</strong>: 该模板适用与需要界面导航的应用，基于该模板生成的应用程序，带一个导航，显示一个列表项</li>
<li><strong>OpenGL ES Application</strong>: 该模板适用于基于OpenGL ES的应用程序，例如游戏类程序。基于该模板生成的应用程序，带一个用来输出OpenGL ES场景的视图和一个支持动画的视图</li>
<li><strong>Splite View-based Application</strong>: 该模板适用于需要用到左右分栏视图的iPad程序，基于该模板生成的应用程序，提供了一个左右分栏的界面控件</li>
<li><strong>Tab Bar Application</strong>: 该模板适用于适用采用标签页的应用程序，基于该模板生成的应用程序，默认带有标签页</li>
<li><strong>Utility Application</strong>: 该模板适用与有一个主界面和一个信息页的应用，基于该模板生成的应用程序，主界面上有一个信息按钮，点击后，有一个翻转动画，切换到另一个信息界面</li>
<li><strong>View-based Application</strong>: 该模板适用于单一界面的应用，基于该模板生成的应用程序，只有一个空白界面视图</li>
<li><strong>Window-based Application</strong>: 该模板适用于空白的应用程序，基于该模板生成的应用程序，只有一个窗体，没有任何视图，需要手动添加</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241536813.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/1343485rz.jpg" alt="201105112234.jpg" width="640" height="431" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">对于我们的Hello World项目来说，最适合的项目模板是“View-based Application”，我们只要基于它创建一个单一带有空白视图的应用，然后再将UILabel拖到上面就可以实现基本功能。</p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">项目基本选项</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">点击下一步，进入“Choose options for your new project”界面，在这里，可以选择设置项目的基本选项，其中：</p>
<ul>
<li><strong>Product Name</strong>: 指产品名称，在这里项目中，我们直接命名为“Hello World”</li>
<li><strong>Company Identifier</strong>: 公司标识符，一般命名规则为 “com.公司名”</li>
<li><strong>Bundle Identifier</strong>: 指包标识符，用于唯一标识应用程序，默认会根据公司标识符和产品名来组合生成</li>
<li><strong>Device Family</strong>: 指该应用支持的设备类型，共三个选项：iPhone、iPad、Universal（即iPhone、iPad通用）</li>
<li><strong>Include Unite Tests</strong>: 是否包含单元测试代码模板，如果勾选，Xcode会帮助生成单元测试代码模板</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241493197.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134348jVh.jpg" alt="201105112323.jpg" width="640" height="418" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">选择存储路径</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">点击Next按钮后，进入选择文件存储路径界面，在这里，可以选择要存储项目的目录。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242083310.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134349oeL.jpg" alt="201105112332.jpg" width="640" height="478" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">项目创建完成</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">点击“Create”按钮，项目创建完成，弹出项目窗口。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241552537.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134349NXP.jpg" alt="201105112337.jpg" width="640" height="412" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">试运行项目</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">经过上面的步骤，我们已经基于模板创建了一个项目，在开始开发前，我们可以尝试先试运行一下项目，看看效果。点击Xcode左上角的“Run”按钮，Xcode即开始对项目进行编译，编译完成后，会弹出iPhone模拟器，在模拟器中运行项目，当然我们的项目现在运行起来还只能看到一个空白的界面。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241493164.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134349BW6.jpg" alt="201105120009.jpg" width="368" height="716" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">点Xcode左上角的“Stop”按钮，停止运行项目。</p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">编辑界面文件</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">一般创建一个新项目，在项目中会包含一个或多个界面文件，这些界面文件一般称之为“nib文件”，扩展名为nib或xib。或者通过向导创建一个新的View Controller的时候，Xcode会包含一个对应的nib文件，一个头文件和一个实现文件。在我们刚刚以View-based Application为模板创建的Hello World项目中，“Hello_WorldViewController.xib”就是主界面的nib文件。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在Xcode左侧选中“Hello_WorldViewController.xib”文件，并点击工具栏的“Hide or show the Navigator”和“Hide or show the Utilities ”按钮，隐藏左侧Navigator区域，显示Utility区域，这样我们就可以开始在Xcode 4中来编辑界面。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241543716.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134349qCg.jpg" alt="201105120048.jpg" width="640" height="412" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><span style="line-height: 21px; font-size: 14px; font-weight: bold;">添加Label到界面中</span></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">从对象库中，找到我们所需要的Label控件对象，拖动到主界面中，即完成Label控件的添加</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120241516521.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134350Y7w.jpg" alt="201105120102.jpg" width="640" height="412" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">设置Label控件属性</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">选中新添加的Label控件，点击Inspector selector bar区域的“Show the Attributes inspector”按钮，切换到属性编辑界面，分别设置以下属性：</p>
<ul>
<li><strong>Text</strong>: 输入“Hello World”</li>
<li><strong>Alignment</strong>: 选择居中对齐</li>
<li><strong>Font</strong>: 选择“Helvetical Bold 26.0”</li>
<li><strong>Text Color</strong>: 选择红色</li>
<li><strong>Shadow</strong>: 选择黑色（Black Color）</li>
<li><strong>Shadow Offset</strong>: Horizontal和Vertical的值分别输入1</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242103144.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134350HJZ.jpg" alt="201105120125.jpg" width="640" height="412" /></a></p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">设置Label控件的大小和位置</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">在上面的步骤中设置好Label的相关属性后，发现文字特别小，而且显示不完整，并非我们所选择的字体大小，这是由于UILabel有一个属性“adjustsFontSizeToFitWidth”，默认值是“YES”，如果这个属性的值为YES，并且Label的numberOfLines属性值是1，它会根据Label的宽度来自动调整字体大小，通过Xcode新添加的Label，默认宽度比较小，按照正常的26磅大小的字体，无法完整显示，所以就字体大小就被自动调整了，导致显示的和我们期望的不一样。解决这个问题很简单，就是我们重新设置一下Label的宽度，以让其可以完整显示文字。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">选中新添加的Label控件，点击Inspector selector bar区域的“Show the Size inspector”按钮，切换到尺寸和位置设置界面，对宽度进行调整，这里我们给Label设置一个足够的宽度和高度：200&#215;40，以保证字体不会被缩小。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">接下来，就是要调整Label的位置，让它显示在屏幕的正中间。在Xcode中，用鼠标拖动Label，拖动过程中Xcode有辅助线来帮助定位，很容易就可以找到正中心的位置。当然也可以通过简单的计算得到Label如果要显示在正中心，坐标应该为：x = (屏幕宽度 &#8211; Label宽度) / 2 = (320 &#8211; 200) / 2 = 60; y = (屏幕高度 &#8211; 状态栏高度 &#8211; Label高度) / 2 = (480 &#8211; 20 &#8211; 40) / 2 = 210;</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242027874.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134350Vly.jpg" alt="201105120142.jpg" width="640" height="412" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">对修改过的xib文件保存，运行项目，看看效果</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/201105120242028920.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/1343502IN.jpg" alt="201105120151.jpg" width="368" height="716" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">就这样，我们已经完成了第一步：在屏幕上显示文字，设置字体和字体大小，让文字显示在屏幕正中心。下一步，我们要让它支持旋转，并且旋转后，文字还是显示在屏幕正中。</p>
<h3 style="font-size: 10pt; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: #d6d6d6; color: #000000; background-color: transparent;">支持设备旋转</h3>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">前面我们已经学习了解过，要支持设备宣传，要做如下工作：</p>
<ul>
<li>重写对应的View Controller的“shouldAutorotateToInterfaceOrientation:”方法，在方法中申明支持的方向。也就是首先要重写“Hello_WorldViewController.m”中的“shouldAutorotateToInterfaceOrientation:”方法</li>
<li>配置对应的View Controller中的View的autoresizingMask属性，以适应因为界面旋转导致的布局变化。也就是要设置好Label控件的autoresizingMask属性。</li>
</ul>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">还是在界面文件中，选中Label，在尺寸和位置设置界面，通过点击Autosizing中的红色线条，设置Label对上下左右四个方向以及宽度和高度都自动调整，这样就可以保证在设备旋转后，界面的宽度和高度发生改变后，控件对上下左右四个方向的位置以及长度和宽度也会随着一起调整，由于已经设置了文字在Label内部是居中对齐的，就可以保证文字显示在界面居中的位置。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134351yjI.jpg" alt="201105120210.jpg" width="259" height="270" /></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">点击工具栏的“Hide or show the Navigator”和“Hide or show the Utilities ”按钮，显示左侧Navigator区域，隐藏Utility区域，在左侧Navigator区域，选中“Hello_WorldViewController.m”文件，找到“shouldAutorotateToInterfaceOrientation:”方法，对其进行重写，重写后代码如下</p>
<div style="font: normal normal normal 14px/normal Menlo;">- (<span style="line-height: 21px; color: #b831a1;">BOOL</span>)shouldAutorotateToInterfaceOrientation:(<span style="line-height: 21px; color: #7041a7;">UIInterfaceOrientation</span>)interfaceOrientation</div>
<div style="font: normal normal normal 14px/normal Menlo;">{</div>
<div style="font: normal normal normal 14px/normal Menlo; color: #058310; text-indent: 4em;">// Return YES for supported orientations</div>
<div style="font: normal normal normal 14px/normal Menlo; color: #b831a1; text-indent: 4em;">return YES<span style="line-height: 21px; color: #000000;">;</span></div>
<div style="font: normal normal normal 14px/normal Menlo;">}</div>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">对所做的修改进行保存，然后运行项目，弹出模拟器，通过调用模拟器的设备旋转菜单，让iPhone模拟器变成横屏，你将看到文字会自动调整位置，还是显示在屏幕正中的位置。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;"><a style="color: #0066aa; text-decoration: none;" href="http://images.cnblogs.com/cnblogs_com/dotey/201105/20110512024156420.jpg"><img style="border: 0px initial initial;" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2011/05/134351hKV.jpg" alt="201105120213.jpg" width="640" height="328" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">至此，我们就实现了项目的全部需求。</p>
<h2 style="margin-top: 10px; font-size: 1em;">项目总结</h2>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">通过Hello World这个简单项目，我们学习了如何基于Xcode 4分析和开发iOS项目，学习了如何通过iOS Dev Center获取需要的资料。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">源码下载：<a style="color: #0066aa; text-decoration: none;" href="https://github.com/JimLiu/The-practice-of-iPhone-application-development/tree/master/Hello%20World">https://github.com/JimLiu/The-practice-of-iPhone-application-development/tree/master/Hello%20World</a></p>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2011/05/12/686/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>9个很有发展潜力的PHP开源项目 (包括 iphone push 和 phpForAndroid) （转）</title>
		<link>http://www.wangchao123.com/2011/03/21/677</link>
		<comments>http://www.wangchao123.com/2011/03/21/677#comments</comments>
		<pubDate>Mon, 21 Mar 2011 10:41:02 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=677</guid>
		<description><![CDATA[介绍9个很有发展潜力的PHP开源项目 原文: http://developer.51cto.com/art/201101/243552.htm 2011年01月20日02:00 it168网站原创 作者：jacky / 译 编辑：董建伟 评论：0条 本文Tag： PHP开源项目 开源项目 PHP 开源 　　【IT168 专稿】PHP的开源世界可谓相当精彩，其中大家也接触的不少著名的PHP开源项目，比如Drupal、Sugar CMS、Joomla等等，但在本文中，笔者将选取9个最新知名度不是太高，但可在某些方面很实用，目前还在发展阶段，很有潜力的PHP开源项目。相信各位读者看了之后会惊叹：原来PHP还能干这么多事情。 　　1、PHP FOR Android 　　现在，iphone和Android大行其道，拥有它们已经成为一种潮流。而Android的市场份额也变的越来越大。 　　而现在除了可以用JAVA来编写Android应用外，还多了一种选择，那就是可以使用PHP去编写相关的Android应用了，这都要归功于一个开源项目Php For Android(http://phpforandroid.net/)。它实际上是利用了另外一个开源项目Scripting Layer for Android(SL4A)( http://code.google.com/p/android-scripting/)提供的Android接口API去实现的，任何支持SL4A的脚本语言(比如Javascript,Ruby, Perl,PHP,和Python)都能够通过接口直接跟操作系统打交道，编写应用。 　　如果想了解这个项目，可以阅读如下的这篇文章《Build Your First PHP for Android Application》。 　　2、PL/PHP 　　某些数据库任务涉及很复杂的逻辑计算，而不是简单使用几句SQL语句就可以解决问题。为了降低其复杂性，许多数据库的解决方案中提供了存储过程，它在一个子程序中封装了要完成任务的逻辑，这些子任何的功能其实就象PHP中的函数一样。 　　存储过程可以用相应的SQL去编写的，如微软的存储过程使用T-SQL,Oracle则采用PL-SQL。比如PostgreSQL数据库能执行由C,C++,Java，Ruby,Perl,Python编写的存储过程，而有了PL/php 开源项目(https://public.commandprompt.com/projects/plphp/wiki)，现在你可以使用PHP去编写存储过程了。 　　当安装了PL/PHP项目后，你就可以在PostgreSQL下执行使用PHP编写的存储过程了，可以使用你熟悉的PHP语法，十分简单。 　　3、PHP-QT 　　PHP-QT项目(http://developer.berlios.de/projects/php-qt/)允许你使用PHP语言去编写实现QT的功能，也就是说，可以使用PHP-QT去编写一些功能强大的桌面应用。所谓QT是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的，很容易扩展，并且允许真正地组件编程。 　　但有点遗憾的是，这几年这个项目的发展有点迟缓了，如果确实有兴趣的话，建议也去研究下PHP-GTK这个项目(http://gtk.php.net/) 　　4、Phuby 　　最近,Ruby核心团队成员Aaron Patterson完成了phuby,它可以在Rails应用下运行php应用程序。项目的地址在https://github.com/tenderlove/phuby，尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行，但实际上在Rails社区中，估计phuby也只是一个实验品而已。 　　5、另外一个phuby 　　Sean Huber也发布了另外一个同名的项目，居然也叫phuby，但这个跟上面介绍那个是完全没任何关系的。项目地址在https://github.com/huberry/phuby。这个项目为php增加了几个有趣的功能，而只需要在php中设置include_path指向phuby的库位置就可以了。虽然该项目还是处在比较初级的阶段，但其实它已经是综合了php和ruby的一些特点了。 　　6、Objective-PHP and Moka 　　Objective-PHP [...]]]></description>
			<content:encoded><![CDATA[<div>
<h1>介绍9个很有发展潜力的PHP开源项目</h1>
</div>
<div>原文: <a href="http://developer.51cto.com/art/201101/243552.htm">http://developer.51cto.com/art/201101/243552.htm</a></p>
<p>2011年01月20日02:00 <!--511--><!--True--><a href="http://www.it168.com/" target="_blank">it168网站</a>原创 作者：jacky / 译 编辑：<a href="http://archive.it168.com/user/%b6%ad%bd%a8%ce%b0/" target="_blank">董建伟</a> 评论：<span id="page_CommentCount">0</span>条</div>
<p><!-- Tag --></p>
<div>本文Tag： <a href="http://tech.it168.com/chanel-4-tagid-28578-page-1.shtml" target="_blank">PHP开源项目</a> <a href="http://tech.it168.com/chanel-4-tagid-28255-page-1.shtml" target="_blank">开源项目</a> <a href="http://tech.it168.com/chanel-4-tagid-25797-page-1.shtml" target="_blank">PHP</a> <a href="http://tech.it168.com/chanel-4-tagid-25918-page-1.shtml" target="_blank">开源</a></div>
<div><a href="http://developer.51cto.com/art/201101/243552.htm"></a></div>
<p><!--wordstart--></p>
<div id="detailWord">
<p>　　【IT168 专稿】PHP的开源世界可谓相当精彩，其中大家也接触的不少著名的PHP开源项目，比如Drupal、Sugar CMS、Joomla等等，但在本文中，笔者将选取9个最新知名度不是太高，但可在某些方面很实用，目前还在发展阶段，很有潜力的PHP开源项目。相信各位读者看了之后会惊叹：原来PHP还能干这么多事情。</p>
<p>　　<strong>1、PHP FOR Android</strong></p>
<p>　　现在，iphone和Android大行其道，拥有它们已经成为一种潮流。而Android的市场份额也变的越来越大。</p>
<p>　　而现在除了可以用JAVA来编写Android应用外，还多了一种选择，那就是可以使用PHP去编写相关的Android应用了，这都要归功于一个开源项目Php For Android(http://phpforandroid.net/)。它实际上是利用了另外一个开源项目Scripting Layer for Android(SL4A)( http://code.google.com/p/android-scripting/)提供的Android接口API去实现的，任何支持SL4A的脚本语言(比如Javascript,Ruby, Perl,PHP,和Python)都能够通过接口直接跟<a title="操作系统" href="http://product.it168.com/list/b/0501_1.shtml" target="_blank">操作系统</a>打交道，编写应用。</p>
<p>　　如果想了解这个项目，可以阅读如下的这篇文章《<a href="http://www.developer.com/lang/php/article.php/3904261/Build-Your-First-PHP-for-Android-Application.htm" target="_blank">Build Your First PHP for Android Application</a>》。</p>
<p><strong>　　2、PL/PHP</strong></p>
<p>　　某些数据库任务涉及很复杂的逻辑计算，而不是简单使用几句SQL语句就可以解决问题。为了降低其复杂性，许多数据库的解决方案中提供了存储过程，它在一个子程序中封装了要完成任务的逻辑，这些子任何的功能其实就象PHP中的函数一样。</p>
<p>　　存储过程可以用相应的SQL去编写的，如微软的存储过程使用T-SQL,Oracle则采用PL-SQL。比如PostgreSQL数据库能执行由C,C++,Java，Ruby,Perl,Python编写的存储过程，而有了PL/php 开源项目(https://public.commandprompt.com/projects/plphp/wiki)，现在你可以使用PHP去编写存储过程了。</p>
<p>　　当安装了PL/PHP项目后，你就可以在PostgreSQL下执行使用PHP编写的存储过程了，可以使用你熟悉的PHP语法，十分简单。</p>
<p><strong>　　3、PHP-QT</strong></p>
<p>　　PHP-QT项目(http://developer.berlios.de/projects/php-qt/)允许你使用PHP语言去编写实现QT的功能，也就是说，可以使用PHP-QT去编写一些功能强大的桌面应用。所谓QT是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的，很容易扩展，并且允许真正地组件编程。</p>
<p>　　但有点遗憾的是，这几年这个项目的发展有点迟缓了，如果确实有兴趣的话，建议也去研究下PHP-GTK这个项目(http://gtk.php.net/)</p>
<p><strong>　　4、Phuby</strong></p>
<p>　　最近,Ruby核心团队成员Aaron Patterson完成了phuby,它可以在Rails应用下运行php应用程序。项目的地址在https://github.com/tenderlove/phuby，尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行，但实际上在Rails社区中，估计phuby也只是一个实验品而已。</p>
<p><strong>　　5、另外一个phuby</strong></p>
<p>　　Sean Huber也发布了另外一个同名的项目，居然也叫phuby，但这个跟上面介绍那个是完全没任何关系的。项目地址在https://github.com/huberry/phuby。这个项目为php增加了几个有趣的功能，而只需要在php中设置include_path指向phuby的库位置就可以了。虽然该项目还是处在比较初级的阶段，但其实它已经是综合了php和ruby的一些特点了。</p>
<p><strong>　　6、Objective-PHP and Moka</strong></p>
<p>　　Objective-PHP and Moka are two ambitious projects headed by Stephen Lerodiaconou. TObjective-PHP(https://github.com/stevegeek/moka)和Moka(https://github.com/stevegeek/moka)这两个项目是由Stephen Lerodiaconou.带领研发的很有野心的项目，他们为PHP语言增加了Object-C语言和Cocoa　framework(注：Cocoa是Mac OSX<a title="操作系统" href="http://product.pcpop.com/Operating_System/00000_1.html" target="_blank">操作系统</a>开发语言)。它们项目中的文档宣称这些新特性能吸引原来的Capucchino开发者。</p>
<p>　　你可以观看这个视频(http://vimeo.com/9838953)去了解这两个框架。</p>
<p><strong>　　7、Php-serial</strong></p>
<p>　　你想通过编写php语言去操纵如视频，音频或计算机的串并口设备?现在是可以变成现实了。使用php-serial这个开源项目(http://code.google.com/p/php-serial/)，可以很容易地去实现。比如只需要调用deviceSet()方法，将串口名传递进去就可以了，接着就可以使用简单的读和写的方法了，比如：</p>
<div id="div_code" style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 97%; word-break: break-all; padding-top: 4px; border: windowtext 0.5pt solid;">
<div><!--</p>
<p>Code highlighting produced by Actipro CodeHighlighter (freeware)</p>
<p>http://www.CodeHighlighter.com/</p>
<p>--><img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br />
<img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" />deviceSet(</span><span style="COLOR: #000000">&#8216;</span><span style="COLOR: #000000">COM2</span><span style="COLOR: #000000">&#8216;</span><span style="COLOR: #000000">);<br />
<img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #800080">$seria</span><span style="COLOR: #000000">&#8211;&gt;</span><span style="COLOR: #000000">deviceOpen();<br />
<img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #800080">$serial</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sendMessage(</span><span style="COLOR: #000000">&#8216;</span><span style="COLOR: #000000">Sending a message to the port!</span><span style="COLOR: #000000">&#8216;</span><span style="COLOR: #000000">);<br />
<img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #800080">$serial</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">deviceClose();<br />
<img src="http://www.wangchao123.com/CodeHighlighter/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #000000">?&gt;</span></div>
</div>
<p> <strong>　　8、Apns-PHP</strong></p>
<p>　　在苹果的操作系统3.0以上，你可以享受到苹果的推送信息的服务，简称Apple Push Notification Service(APNS)，及时获得各类有用的资讯。</p>
<p>　　现在，你可以使用PHP去实现这个功能了，apns-php项目提供了这个功能，项目的地址在http://code.google.com/p/apns-php/，该项目的文档宣称APNS API在2010年的12月17日已经完成了，可以提供自定义提醒图片和本地化的按钮等新特性。</p>
<p>　　有一篇很好的入门导学文章指导你对apns-php的学习(http://blog.boxedice.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial/)</p>
<p><strong>　　9、CFPropertyList</strong></p>
<p>　　cocoa框架使用属性列表来管理序列化数据。这些属性列表可以通过Apple的如plutil等工具进行设置。然而有的开发者希望用他们熟悉的方式去管理这些数据，目前有不少开源项目可以实现这个目的，比如CFPropertyList就是其中之一，项目地址在：</p>
<p>　　https://github.com/rodneyrehm/CFPropertyList，它允许PHP开发者可以创建属性列表，之后发送到iPhone应用。</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2011/03/21/677/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iphone 开发文档，资源，入门索引</title>
		<link>http://www.wangchao123.com/2011/03/03/640</link>
		<comments>http://www.wangchao123.com/2011/03/03/640#comments</comments>
		<pubDate>Thu, 03 Mar 2011 05:49:48 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=640</guid>
		<description><![CDATA[引用新手入门页面    http://www.cocoachina.com/special/fornew.html 1.json json编码解码2.GTMBase64 base64编码解码3.TouchXML xml解析4.SFHFKeychainUtils 安全保存用户密码到keychain中5.MBProgressHUD 很棒的一个加载等待特效框架6.ASIHTTPRequest http等相关协议封装7.EGORefreshTableHeaderView 下拉刷新代码8.AsyncImageView 异步加载图片并缓存代码9.类似setting的竖立也分栏程序 1.下载排名相关:appannie2.用户行为分析:flurry3.majicrank-各国排名查询工具 (推荐)4.AppViz-App销售统计软件 (推荐)5.PodViz-用户评论等查看工具6.appfigures-报表统计分析工具7.我成立的一个帮助开发者推广app的评测站:苹果I派党]]></description>
			<content:encoded><![CDATA[<p>引用新手入门页面    <a href="http://www.cocoachina.com/special/fornew.html">http://www.cocoachina.com/special/fornew.html</p>
<p></a><br />
1.<a id="url_1" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://code.google.com/p/json-framework" target="_blank">json</a> json编码解码<br style="outline-style: none; outline-width: initial; outline-color: initial;" />2.<a id="url_2" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87" target="_blank">GTMBase64</a> base64编码解码<br style="outline-style: none; outline-width: initial; outline-color: initial;" />3.<a id="url_3" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="https://github.com/schwa/TouchXML" target="_blank">TouchXML</a> xml解析<br style="outline-style: none; outline-width: initial; outline-color: initial;" />4.<a id="url_4" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="https://github.com/ldandersen/scifihifi-iphone" target="_blank">SFHFKeychainUtils</a> 安全保存用户密码到keychain中<br style="outline-style: none; outline-width: initial; outline-color: initial;" />5.<a id="url_5" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="https://github.com/jdg/MBProgressHUD" target="_blank">MBProgressHUD</a> 很棒的一个加载等待特效框架<br style="outline-style: none; outline-width: initial; outline-color: initial;" />6.<a id="url_6" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://allseeing-i.com/ASIHTTPRequest" target="_blank">ASIHTTPRequest</a> http等相关协议封装<br style="outline-style: none; outline-width: initial; outline-color: initial;" />7.<a id="url_7" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="https://github.com/enormego/EGOTableViewPullRefresh" target="_blank">EGORefreshTableHeaderView</a> 下拉刷新<span id="rlt_3" style="outline-style: none; outline-width: initial; outline-color: initial; cursor: pointer; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #fa891b;">代码</span><br style="outline-style: none; outline-width: initial; outline-color: initial;" />8.<a id="url_8" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.markj.net/iphone-asynchronous-table-image/" target="_blank">AsyncImageView</a> 异步加载<span id="rlt_4" style="outline-style: none; outline-width: initial; outline-color: initial; cursor: pointer; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #fa891b;">图片</span>并缓存代码<br style="outline-style: none; outline-width: initial; outline-color: initial;" />9.<a id="url_9" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://blog.blackwhale.at/" target="_blank">类似setting的竖立也分栏程序</p>
<p>1.下载排名相关:</a><a id="url_10" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.appannie.com/" target="_blank">appannie</a><br style="outline-style: none; outline-width: initial; outline-color: initial;" />2.用户行为分析:<a id="url_11" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.flurry.com/" target="_blank">flurry</a><br style="outline-style: none; outline-width: initial; outline-color: initial;" />3.<a id="url_12" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://majicjungle.com/majicrank.html" target="_blank">majicrank</a>-各国排名查询工具 (推荐)<br style="outline-style: none; outline-width: initial; outline-color: initial;" />4.<a id="url_13" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.cocoachina.com/appstore/sales/2010/0331/890.html" target="_blank">AppViz</a>-App销售统计软件 (推荐)<br style="outline-style: none; outline-width: initial; outline-color: initial;" />5.<a id="url_14" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.ideaswarm.com/products/appviz/" target="_blank">PodViz</a>-用户评论等查看工具<br style="outline-style: none; outline-width: initial; outline-color: initial;" />6.<a id="url_15" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="https://www.appfigures.com/" target="_blank">appfigures</a>-报表统计分析工具<br style="outline-style: none; outline-width: initial; outline-color: initial;" />7.我成立的一个帮助开发者<span id="rlt_5" style="outline-style: none; outline-width: initial; outline-color: initial; cursor: pointer; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #fa891b;">推广</span><span id="rlt_1" style="outline-style: none; outline-width: initial; outline-color: initial; cursor: pointer; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #fa891b;">app</span>的评测站:<a id="url_16" style="outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; color: #0070af;" href="http://www.ipadown.com/" target="_blank">苹果I派党</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2011/03/03/640/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>php版push服务器的流程(测试成功)</title>
		<link>http://www.wangchao123.com/2010/12/30/627</link>
		<comments>http://www.wangchao123.com/2010/12/30/627#comments</comments>
		<pubDate>Thu, 30 Dec 2010 09:40:11 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=627</guid>
		<description><![CDATA[参考文档： http://www.cocoachina.com/bbs/read.php?tid-30410.html http://iphone.ipsw.info/2010/04/apple-push-notification-adhoc.html 初学iPhone开发,经过反复多次验证,结合下面2个教程: http://ameyashetti.wordpress.com/2009/07/31/apple-push-notification-service-tutorial/ http://www.macoscoders.com/2009/05/17/iphone-apple-push-notification-service-apns/ 得出从零开始的php版push服务器搭建流程: ============================================================== 0.在Mac OS X机器上安装好XCode, 连接一台正常的iPhone, 保持平和的心态 APP 开发基础设置 1.在iPhone Provisioning Portal中建立好APP ID和Device. 2.在Keychain Access.app中生成证书请求CertificateSigningRequest.certSigningRequest(菜单 &#62; Keychain Access &#62; Certificate Assistant &#62; Request a Certificate From a Certificate Authority&#8230;). 3.在iPhone Provisioning Portal &#62; Certificates中请求一个证书(点击Request Certificate,上传CertificateSigningRequest.certSigningRequest). 4.请求完成后,将证书文件(developer_identity.cer)下载,双击导入到Key Chain中. 5.在iPhone Provisioning Portal &#62; Provisioning 中,新建一个Profile, 选择指定的APP ID和 Devices后生成. 6.将刚刚生成的Profile下载为*_profile.mobileprovision, 双击该文件, 将profile加载到iPhone中. [...]]]></description>
			<content:encoded><![CDATA[<p>参考文档：<br />
<a href="http://www.cocoachina.com/bbs/read.php?tid-30410.html">http://www.cocoachina.com/bbs/read.php?tid-30410.html</a><br />
<a href="http://iphone.ipsw.info/2010/04/apple-push-notification-adhoc.html">http://iphone.ipsw.info/2010/04/apple-push-notification-adhoc.html</a></p>
<p>初学<span id="rlt_1" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=iPhone',this.id)">iPhone</span><span id="rlt_3" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=开发',this.id)">开发</span>,经过反复多次验证,结合下面2个教程:<br />
<a id="url_1" onclick="return checkUrl(this)" href="http://ameyashetti.wordpress.com/2009/07/31/apple-push-notification-service-tutorial/" target="_blank"><span style="color: #0070af;">http://ameyashetti.wordpress.com/2009/07/31/apple-push-notification-service-tutorial/</span></a><br />
<a id="url_2" onclick="return checkUrl(this)" href="http://www.macoscoders.com/2009/05/17/iphone-apple-push-notification-service-apns/" target="_blank"><span style="color: #0070af;">http://www.macoscoders.com/2009/05/17/iphone-apple-push-notification-service-apns/</span></a></p>
<p>得出从零开始的php版push服务器搭建流程:<br />
==============================================================<br />
0.在Mac OS X机器上安装好<span id="rlt_5" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=XCode',this.id)">XCode</span>, 连接一台正常的iPhone, 保持平和的心态</p>
<p><span id="rlt_2" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=APP',this.id)">APP</span> 开发基础设置<br />
1.在iPhone Provisioning Portal中建立好APP ID和Device.<br />
2.在Keychain Access.app中生成证书请求CertificateSigningRequest.certSigningRequest(菜单 &gt; Keychain Access &gt; Certificate Assistant &gt; Request a Certificate From a Certificate Authority&#8230;).<br />
3.在iPhone Provisioning Portal &gt; Certificates中请求一个证书(点击Request Certificate,上传CertificateSigningRequest.certSigningRequest).<br />
4.请求完成后,将证书<span id="rlt_8" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=文件',this.id)">文件</span>(developer_identity.cer)下载,双击导入到Key Chain中.<br />
5.在iPhone Provisioning Portal &gt; Provisioning 中,新建一个Profile, 选择指定的APP ID和 Devices后生成.<br />
6.将刚刚生成的Profile下载为*_profile.mobileprovision, 双击该文件, 将profile加载到iPhone中.</p>
<p>Push Notification service设置<br />
7.在iPhone Provisioning Portal &gt; App IDs,选择需要Push服务的App ID, 进入Configure.<br />
8.确认 Enable for <span id="rlt_6" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=Apple',this.id)">Apple</span> Push Notification service ,配置 Development Push SSL Certificate, <span id="rlt_7" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=上传',this.id)">上传</span>第2步生成的证书请求.<br />
9.下载生成的aps_developer_identity.cer, 完成Push服务配置.<br />
10.双击aps_developer_identity.cer,保存到Key Chain.</p>
<p>生成php Push Notification sender需要的证书文件<br />
11.在Keychain Access.app里选定这个新证书(Apple Development Push Services*),导出到桌面,保存为Certificates.p12.<br />
12.运行如下命令:</p>
<table border="0" cellspacing="0" cellpadding="0" width="80%">
<tbody>
<tr>
<td><span class="f10 s8"><a onclick="CopyCode(document.getElementById('code1'));" href="javascript:"><span style="color: #0070af;">复制代码</span></a></span></p>
<div id="code1" class="blockquote2">
<ol>
<li> openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificates.p12</li>
<li> openssl pkcs12 -nocerts -out key.pem -in Certificates.p12</li>
<li> openssl rsa -in key.pem -out key.unencrypted.pem</li>
<li> cat cert.pem key.unencrypted.pem &gt; ck.pem</li>
</ol>
</div>
</td>
</tr>
</tbody>
</table>
<p>获得php Push Notification sender所需的设备令牌:<br />
13.新建一个View-based Application项目,在$PROJECT_NAMEAppDelegate.m中:<br />
a.粘贴如下<span id="rlt_4" style="cursor: pointer; border-bottom: #fa891b 1px solid;" onclick="sendmsg('pw_ajax.php','action=relatetag&amp;tagname=代码',this.id)">代码</span>:</p>
<table border="0" cellspacing="0" cellpadding="0" width="80%">
<tbody>
<tr>
<td><span class="f10 s8"><a onclick="CopyCode(document.getElementById('code2'));" href="javascript:"><span style="color: #0070af;">复制代码</span></a></span></p>
<div id="code2" class="blockquote2">
<ol>
<li>- (void)applicationDidFinishLaunching:(UIApplication *)app {</li>
<li> // other setup tasks here….</li>
<li> [window addSubview:viewController.view];</li>
<li> [self alertNotice:@"" withMSG:@"Initiating Remote Noticationss Are Active" cancleButtonTitle:@"Ok" otherButtonTitle:@""];</li>
<li> [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound)];</li>
<li>}</li>
<li>- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {</li>
<li> //NSLog(@”devToken=%@”,deviceToken);</li>
<li> [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"devToken=%@",deviceToken] cancleButtonTitle:@”Ok” otherButtonTitle:@”"];</li>
<li>}</li>
<li>- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {</li>
<li> NSLog(@”Error in registration. Error: %@”, err);</li>
<li> [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"Error in registration. Error: %@", err] cancleButtonTitle:@”Ok” otherButtonTitle:@”"];</li>
<li>}</li>
<li>-(void)alertNotice:(NSString *)title withMSG:(NSString *)msg cancleButtonTitle:(NSString *)cancleTitle otherButtonTitle:(NSString *)otherTitle{</li>
<li> UIAlertView *alert;</li>
<li> if([otherTitle isEqualToString:@""])</li>
<li> alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:cancleTitle otherButtonTitles:nil,nil];</li>
<li> else</li>
<li> alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:cancleTitle otherButtonTitles:otherTitle,nil];</li>
<li> [alert show];</li>
<li> [alert release];</li>
<li>}</li>
</ol>
</div>
</td>
</tr>
</tbody>
</table>
<p>b.在 &#8211; (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 方法中增加</p>
<table border="0" cellspacing="0" cellpadding="0" width="80%">
<tbody>
<tr>
<td><span class="f10 s8"><a onclick="CopyCode(document.getElementById('code3'));" href="javascript:"><span style="color: #0070af;">复制代码</span></a></span></p>
<div id="code3" class="blockquote2">
<ol>
<li> [self alertNotice:@"" withMSG:@"Initiating Remote Noticationss Are Active" cancleButtonTitle:@"Ok" otherButtonTitle:@""];</li>
<li> [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound)];</li>
</ol>
</div>
</td>
</tr>
</tbody>
</table>
<p>14.项目设置<br />
a.Targets &gt; $APP_NAME &gt; context menu &gt; Properties &gt; Identifier<br />
修改 identifier 为App ID<br />
b.Targets &gt; $APP_NAME &gt; context menu &gt; Build &gt; Code Signing &gt; Code Signing Identifier &gt; Any iPhone OS Device<br />
指定 iPhone Developer 为开发用机<br />
15.编译并运行后会在iPhone上显示设备令牌</p>
<p>16.php Push Notification sender代码如下:</p>
<table border="0" cellspacing="0" cellpadding="0" width="80%">
<tbody>
<tr>
<td><span class="f10 s8"><a onclick="CopyCode(document.getElementById('code4'));" href="javascript:"><span style="color: #0070af;">复制代码</span></a></span></p>
<div class="blockquote2">
<p>exp:&lt;br&gt;<br />
?message=A test message from localhost&amp;badge=2&amp;sound=received5.caf&amp;deviceToken=xxx<br />
&lt;?<br />
$deviceToken = $_REQUEST['deviceToken'];<br />
//$deviceToken = &#8216;af21fc88 c3f5c90c f8ef8dc7 950f1101 37aab01c 169d5088 11af11cf 5dc617ee&#8217;;<br />
$pass = &#8217;111111&#8242;;   // Passphrase for the private key (ck.pem file)</p>
<p>// Get the parameters from http get or from command line<br />
$message = $_REQUEST['message'] or $message = $argv[1] or $message = &#8216;A test message from worldcup&#8217;;<br />
$badge = (int)$_REQUEST['badge'] or $badge = 0;<br />
$sound = $_REQUEST['sound'] or $sound = $argv[3];</p>
<p>// Construct the notification payload<br />
$body = array();<br />
$body['aps'] = array(&#8216;alert&#8217; =&gt; $message);<br />
if ($badge)<br />
$body['aps']['badge'] = $badge;<br />
if ($sound)<br />
$body['aps']['sound'] = $sound;</p>
<p>/* End of Configurable Items */<br />
$ctx = stream_context_create();<br />
stream_context_set_option($ctx, &#8216;ssl&#8217;, &#8216;local_cert&#8217;, &#8216;dev.pem&#8217;);<br />
// assume the private key passphase was removed.<br />
stream_context_set_option($ctx, &#8216;ssl&#8217;, &#8216;passphrase&#8217;, $pass);</p>
<p>// connect to apns<br />
$fp = stream_socket_client(&#8216;ssl://gateway.sandbox.push.apple.com:2195&#8242;, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);<br />
if (!$fp) {<br />
print “Failed to connect $err $errstr\n”;<br />
return;<br />
}<br />
else {<br />
print “Connection OK\n&lt;br/&gt;”;<br />
}</p>
<p>// send message<br />
$payload = json_encode($body);<br />
$msg = chr(0) . pack(“n”,32) . pack(&#8216;H*&#8217;, str_replace(&#8216; &#8216;, ”, $deviceToken)) . pack(“n”,strlen($payload)) . $payload;<br />
print “Sending message :” . $payload . “\n”;<br />
fwrite($fp, $msg);<br />
fclose($fp);<br />
?&gt;</p>
<ol>
<li><span style="color: #ff0000;">需要注意:</span><br />
dev 环境用:</li>
<li>$fp = stream_socket_client(“<span style="color: #ff0000;">ssl://gateway.sandbox.push.apple.com</span>:2195&#8243;, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);adhoc 用:<br />
$fp = stream_socket_client(“<span style="color: #ff0000;">ssl://gateway.push.apple.com</span>:2195&#8243;, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);</li>
</ol>
</div>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2010/12/30/627/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iphone app 如何联机调试和发布程序(99$) (转)</title>
		<link>http://www.wangchao123.com/2010/06/17/515</link>
		<comments>http://www.wangchao123.com/2010/06/17/515#comments</comments>
		<pubDate>Thu, 17 Jun 2010 06:25:40 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=515</guid>
		<description><![CDATA[原帖地址  http://www.cocoachina.com/bbs/read.php?tid-7923.html 这两天公司让整理文档，一直想写一篇更详细的联机调试的文档，这次刚好是机会 我写的只是联机调试的步骤，并没有深入的去写为什么这么做（关键是我不知道） 希望这篇文章对菜鸟们有帮助， 高手们见了了就不要笑了~~ 明天再接着写如何发布程序 必须条件： 99$ (没这个就不用再往下看了) 我的系统是10.5.7   不同版本的系统，可能有点小小的区别 首先登录到 http://developer.apple.com/iphone/index.action 如果已经购买了99$, 登录进去后会看到如下地方(图1)    点进去会看到如下界面(图2)    这里我要提一下，公司和个人的$99  Team里面的内容是有所不同的(至少我发现有不同) 公司的Team下面可以加入Member  而个人的不能加入Member只能是一个人，不过这里并无大碍，不妨碍我们下面的内容。 点击进入 Certificates 看到如下内容(图3) 点击图中红色部分 会下载下来一个名字为  AppleWWDRCA.cer  的东西 这个是调试发布IPHONE 程序必须的一个东西，这个东西我们只要下载一次就够了，即使你有N个IDP，那么无论是调试程序，还是发布程序，那也只需要一个，后面我们要说到Distribution页面时，也有这个链接，如果已经下载过，那么就不用再下这个了。(最初因为对这个流程不懂，我下载了N次这个)， 下完之后，点击这个，这个东西就会装到自己的机器上。 打开你的  Keychain Access ，如果dock里面没有到 C盘 ApplicationsUtilities下面去找Keychain Access，中文名字好像叫” 钥匙串…” 打开这个，你会看到如下(图4) 这代表你已经装进去了。 下面，我们打开Keychain的这个菜单(图5)    按着下面的图来 (图6)    (图7)    (图8)    然后continute 就会生成一个CertificateSigningRequest.certSigningRequest 的文件，在你的桌面上哦 下一步(图9)：    点击Request Certificate(图10)    点击Choose [...]]]></description>
			<content:encoded><![CDATA[<p>原帖地址  <a href="http://www.cocoachina.com/bbs/read.php?tid-7923.html">http://www.cocoachina.com/bbs/read.php?tid-7923.html</a></p>
<p>这两天公司让整理文档，一直想写一篇更详细的联机调试的文档，这次刚好是机会<br />
我写的只是联机调试的步骤，并没有深入的去写为什么这么做（关键是我不知道）<br />
希望这篇文章对菜鸟们有帮助，<br />
高手们见了了就不要笑了~~</p>
<p>明天再接着写如何发布程序</p>
<p>必须条件：<br />
99$<br />
(没这个就不用再往下看了)<br />
我的系统是10.5.7   不同版本的系统，可能有点小小的区别<br />
首先登录到<br />
<a id="url_1" onclick="return checkUrl(this)" href="http://developer.apple.com/iphone/index.action" target="_blank">http://developer.apple.com/iphone/index.action</a></p>
<p>如果已经购买了99$, 登录进去后会看到如下地方(图1)<br />
  <span id="att_4277"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540Blx.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540Blx.jpg" border="0" alt="" /></span></p>
<p>点进去会看到如下界面(图2)<br />
  <span id="att_4278"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540Zhc.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540Zhc.jpg" border="0" alt="" /></span></p>
<p>这里我要提一下，公司和个人的$99  Team里面的内容是有所不同的(至少我发现有不同)<br />
公司的Team下面可以加入Member  而个人的不能加入Member只能是一个人，不过这里并无大碍，不妨碍我们下面的内容。<br />
点击进入 Certificates 看到如下内容(图3)<br />
<span id="att_4279"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540NMh.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540NMh.jpg" border="0" alt="" width="700" /></span></p>
<p>点击图中红色部分 会下载下来一个名字为  AppleWWDRCA.cer  的东西<br />
这个是调试发布IPHONE 程序必须的一个东西，这个东西我们只要下载一次就够了，即使你有N个IDP，那么无论是调试程序，还是发布程序，那也只需要一个，后面我们要说到Distribution页面时，也有这个链接，如果已经下载过，那么就不用再下这个了。(最初因为对这个流程不懂，我下载了N次这个)，<br />
下完之后，点击这个，这个东西就会装到自己的机器上。<br />
打开你的  Keychain Access ，如果dock里面没有到 C盘 ApplicationsUtilities下面去找Keychain Access，中文名字好像叫” 钥匙串…” 打开这个，你会看到如下(图4)<br />
<span id="att_4280"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540PUj.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062540PUj.jpg" border="0" alt="" width="700" /></span></p>
<p>这代表你已经装进去了。</p>
<p>下面，我们打开Keychain的这个菜单(图5)<br />
  <span id="att_4281"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062541pno.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062541pno.jpg" border="0" alt="" width="700" /></span></p>
<p>按着下面的图来<br />
(图6)<br />
  <span id="att_4282"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062541vbt.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062541vbt.png" border="0" alt="" /></span></p>
<p>(图7)<br />
  <span id="att_4283"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062542BcK.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062542BcK.png" border="0" alt="" /></span></p>
<p>(图8)<br />
  <span id="att_4284"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062542XzI.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062542XzI.png" border="0" alt="" /></span></p>
<p>然后continute<br />
就会生成一个CertificateSigningRequest.certSigningRequest 的文件，在你的桌面上哦</p>
<p>下一步(图9)：<br />
  <span id="att_4285"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543YOz.jpg');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543YOz.jpg" border="0" alt="" width="700" /></span></p>
<p>点击Request Certificate(图10)<br />
  <span id="att_4286"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543SXO.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543SXO.png" border="0" alt="" width="700" /></span></p>
<p>点击Choose File（图11）<br />
<span id="att_4287"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543WdZ.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062543WdZ.png" border="0" alt="" width="700" /></span><br />
选中CertificateSigningRequest.certSigningRequest</p>
<p>点击Choose（图12）<br />
  <span id="att_4288"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544bgd.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544bgd.png" border="0" alt="" width="700" /></span></p>
<p>点击Submit<br />
(图13)<br />
  <span id="att_4289"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625444va.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625444va.png" border="0" alt="" width="700" /></span></p>
<p>点击Approve<br />
（图14）<br />
  <span id="att_4290"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544Bnp.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544Bnp.png" border="0" alt="" width="700" /></span></p>
<p>这时你的证书是牌Pending的状态<br />
刷新一个网页，OK就处于如下状态<br />
（图15）<br />
  <span id="att_4291"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544DQJ.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062544DQJ.png" border="0" alt="" width="700" /></span></p>
<p>这时点击 Download按钮，会得到一个developer_identity.cer   双击这个文件<br />
（图16）<br />
  <span id="att_4292"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062545ABF.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062545ABF.png" border="0" alt="" /></span></p>
<p>点击OK<br />
这时再打开你的keychain 看看 会是如下结果<br />
（图17）<br />
  <span id="att_4293"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062545XOQ.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062545XOQ.png" border="0" alt="" width="700" /></span></p>
<p>切记这时能看到下面那个 钥匙 状的东西，如果没有这个，是不可能调试的，以前有时，我经常看不到那个 钥匙 状的东西<br />
OK，我们继续</p>
<p>打开Devices 那一项<br />
(图18)<br />
  <span id="att_4294"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546i0A.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546i0A.png" border="0" alt="" width="700" /></span></p>
<p>点击 Add Devices<br />
（图19）<br />
  <span id="att_4295"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546ZdR.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546ZdR.png" border="0" alt="" width="700" /></span></p>
<p>给自己的设备取个名字例如MyIPod<br />
DeviceID 就是自己IPod或IPHONE的机身号（40位），机身号的获取方法有很多，可能通过 xcode 的window-&gt;Organizer 来取得<br />
(图20)<br />
  <span id="att_4296"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546Rpy.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062546Rpy.png" border="0" alt="" width="700" /></span></p>
<p>然后填入表中并点击summit<br />
图21<br />
  <span id="att_4297"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062547qOG.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062547qOG.png" border="0" alt="" width="700" /></span></p>
<p>下面我们来搞APPID<br />
图22<br />
<span id="att_4298"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625479XD.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625479XD.png" border="0" alt="" width="700" /></span><br />
点击NewAppID</p>
<p>图23<br />
  <span id="att_4299"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548VpI.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548VpI.png" border="0" alt="" width="700" /></span><br />
第一处，随便写个名字就行了， 我以AppID为例<br />
第二处，一定要注意了，一定要按着这样的格式写<br />
我这里写的是<br />
com.abc.*<br />
你也可以写成 com.xyz.*    com.google.*  <br />
尽量中间那个变量有点意义，一般情况下是公司的名字。<br />
切记一定要写成这种格式，不然以后会有麻烦<br />
然后submit<br />
图24<br />
<span id="att_4300"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548VoK.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548VoK.png" border="0" alt="" width="700" /></span></p>
<p>继续Provisioning页面<br />
图25<br />
  <span id="att_4301"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548sc9.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548sc9.png" border="0" alt="" width="700" /></span><br />
点击New Profile<br />
按着我的填一下<br />
图26<br />
  <span id="att_4302"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548Tja.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062548Tja.png" border="0" alt="" width="700" /></span></p>
<p>填完后 Submit<br />
图27<br />
  <span id="att_4303"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625497ti.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625497ti.png" border="0" alt="" width="700" /></span></p>
<p>Download 你会得到一个 DevProvision.mobileprovision 的文件，这个文件是要装到手机里面的</p>
<p>将这个拖动到organizer  里面<br />
图28<br />
  <span id="att_4304"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625499Vq.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625499Vq.png" border="0" alt="" width="700" /></span></p>
<p>拖动后如图29<br />
  <span id="att_4305"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550aIN.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550aIN.png" border="0" alt="" /></span></p>
<p>这时打开你的IPOD 你会发现在  设置-&gt;通用-&gt;描述文件  里面有个东西，那就是你的证书了<br />
然后再双击DevProvision.mobileprovision这个文件，然后你的xcode 就被激活，这时查看C盘<br />
Users用户名LibraryMobileDeviceProvisioning Profiles下面 是不是有了一个<br />
XXXXXX-XXXXXX-XXXXX-XXXXXX.mobileprovision的文件？</p>
<p>下面随便打开一个IPHONE的工程<br />
打开那个工程的plist文件，把Bundle identifier改成如下<br />
图30<br />
  <span id="att_4306"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550N92.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550N92.png" border="0" alt="" /></span></p>
<p>现在大概你知道 abc 是什么东西了吧<br />
打开这个工程的info<br />
图31<br />
  <span id="att_4307"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550l1T.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062550l1T.png" border="0" alt="" /></span></p>
<p>然后按着下图改一下设置（切记选中你该选中的那一项）<br />
图32<br />
  <span id="att_4308"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062554r0x.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062554r0x.png" border="0" alt="" width="700" /></span></p>
<p>如果你想选中的那一项是灰色的，那么你前面的某些流程一定出了问题</p>
<p>然后还有一处需要确认，如下（图33）<br />
  <span id="att_4309"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625559n9.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0625559n9.png" border="0" alt="" /></span></p>
<p>请确认，红色是部分是你应该选中的<br />
图34<br />
  <span id="att_4310"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062555kQl.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062555kQl.png" border="0" alt="" width="700" /></span></p>
<p>OK<br />
现在已经大功告成了 99.9999%了<br />
选中Device…  Debug    然后 Build and Go<br />
图35<br />
  <span id="att_4311"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062555prd.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062555prd.png" border="0" alt="" width="700" /></span></p>
<p>程序肯定已经跑在你的机器上了，如果不行，那么重起一下你的IPOD，如果再不行那就重起一下你的电脑，如果再再不行那就自己想办法吧</p>
<p>续<br />
接着如何发布程序<br />
打开Certificicates 的Distribution页面<br />
（图36）<br />
  <span id="att_4330"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062556hiK.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062556hiK.png" border="0" alt="" width="700" /></span></p>
<p>点击 Request Certificate按钮(有上面联机调试的步骤这个过程一定很熟了吧)<br />
（图37）<br />
  <span id="att_4331"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062556KfB.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062556KfB.png" border="0" alt="" width="700" /></span></p>
<p>选中CertificateSigningRequest.certSigningRequest  文件(这个文件在联机调试的过程中已经生成过了)，<br />
图38<br />
  <span id="att_4332"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/06255659Y.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/06255659Y.png" border="0" alt="" width="700" /></span></p>
<p>选中然后点击Submit<br />
图39<br />
  <span id="att_4333"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062557Wa1.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062557Wa1.png" border="0" alt="" width="700" /></span></p>
<p>点击Appove<br />
图40<br />
  <span id="att_4334"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062558wUc.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062558wUc.png" border="0" alt="" width="700" /></span></p>
<p>这时需要刷新一下页面<br />
图41<br />
  <span id="att_4335"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062558YL9.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062558YL9.png" border="0" alt="" width="700" /></span></p>
<p>点击DownLoad<br />
会得到一个名为distribution_identity.cer 的文件<br />
双击这个文件，会有如下提示<br />
图42<br />
  <span id="att_4336"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559Jec.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559Jec.png" border="0" alt="" /></span></p>
<p>点击OK<br />
然后打开keychain 就会看到如下的图<br />
图43<br />
  <span id="att_4337"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559y9v.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559y9v.png" border="0" alt="" width="700" /></span></p>
<p>这时你的电脑就已经具备发布程序的证书了</p>
<p>下面打开Provisioning 的Distribution页面<br />
图44<br />
  <span id="att_4338"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559iSI.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062559iSI.png" border="0" alt="" width="700" /></span><br />
点击New Profile<br />
然后按着下图填一下，Profile Name 随便写个名字就行了<br />
图45<br />
  <span id="att_4339"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600P9f.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600P9f.png" border="0" alt="" width="700" /></span></p>
<p>然后Submit<br />
图46<br />
  <span id="att_4340"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600zwq.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600zwq.png" border="0" alt="" width="700" /></span></p>
<p>刷新一下<br />
图47<br />
  <span id="att_4341"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600yCz.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062600yCz.png" border="0" alt="" width="700" /></span></p>
<p>OK现在Download ，你会得到一个 Distribution.mobileprovision 的文件<br />
双击这个文件，你的xcode 会被激活<br />
查看C盘<br />
Users用户名LibraryMobileDeviceProvisioning Profiles下面 又多了一个<br />
XXXXXX-XXXXXX-XXXXX-XXXXXX.mobileprovision的文件</p>
<p>现在我们再配置一下xcode<br />
图48<br />
  <span id="att_4342"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062601zx4.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062601zx4.png" border="0" alt="" /></span></p>
<p>打开Configurations 页面<br />
选中Release 然后Duplicate 一下<br />
图49<br />
  <span id="att_4343"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062601nUK.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062601nUK.png" border="0" alt="" width="700" /></span></p>
<p>Duplicate之后如下图<br />
图50<br />
  <span id="att_4344"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062602F8o.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062602F8o.png" border="0" alt="" width="700" /></span></p>
<p>我们把名字改成Distribution<br />
图51<br />
  <span id="att_4345"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062602Svd.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062602Svd.png" border="0" alt="" width="700" /></span></p>
<p>接着我们切换到Build 页面<br />
图52<br />
  <span id="att_4346"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0626036xW.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0626036xW.png" border="0" alt="" width="700" /></span><br />
图中1处选中Distribution   2处选中Distribution<br />
然后<br />
图53<br />
  <span id="att_4347"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/06260354g.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/06260354g.png" border="0" alt="" /></span></p>
<p>图54<br />
  <span id="att_4348"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0626031my.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/0626031my.png" border="0" alt="" width="700" /></span><br />
确定图54中，是你应该选的，不然build时会出现签名错误</p>
<p>确定之后，继续<br />
图55<br />
  <span id="att_4349"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062604gTd.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062604gTd.png" border="0" alt="" /></span></p>
<p>选中Device 和 Distribution<br />
OK<br />
图56<br />
  <span id="att_4350"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605xGY.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605xGY.png" border="0" alt="" /></span></p>
<p>Build  OK  大功告成了99.9%了</p>
<p>这时如果有签名错误，那一定是你上面某个地方出了问题</p>
<p>成功后<br />
图57<br />
  <span id="att_4351"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605EKE.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605EKE.png" border="0" alt="" width="700" /></span><br />
其中的iHide 就是我们要上传的东西，在上传之前，我们要把他压缩成 zip 包</p>
<p>现在我们在浏览器中输入<br />
itunesconnect.apple.com<br />
登录一下<br />
图58<br />
  <span id="att_4352"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605HOv.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062605HOv.png" border="0" alt="" width="700" /></span></p>
<p>进入Manage Your Applications<br />
图59<br />
  <span id="att_4353"><strong></strong><br />
<img onclick="if(this.width&gt;=700) window.open('http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062606aYT.png');" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2010/06/062606aYT.png" border="0" alt="" /></span><br />
点击Add New Application<br />
……………</p>
<p>OK了<br />
后面的不说了~~~</p>
<p>工具下载见原帖地址 <a href="http://www.cocoachina.com/bbs/read.php?tid-7923.html">http://www.cocoachina.com/bbs/read.php?tid-7923.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2010/06/17/515/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>手机应用方向 &#8212; 突出LBS，简单，实用，本地化，随时可以关掉它不会有任何顾虑</title>
		<link>http://www.wangchao123.com/2010/06/10/504</link>
		<comments>http://www.wangchao123.com/2010/06/10/504#comments</comments>
		<pubDate>Thu, 10 Jun 2010 05:04:39 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=504</guid>
		<description><![CDATA[经过一段时间的 iphone 开发和设计，在设计功能的时候也收到了一些以前设计 web 网站功能的影响 总结了一些体会： ********* 分析: ********* 1. 校内 iphone app -  校内本身网站功能是很复杂的，iphone 端做了很多取舍（即时聊天没有在里面） 总结起来他们突出了3个功能: 看好友动态；评论分享；照相上传， 他们在两个频道右上角都有 照相机的 图标，有效利用了手机上这个移动的镜头， 这个是 web 网站上没有的应该突出。          2. 新浪微薄 写微博2个突出功能（和 web 网站不同）： 坐标 &#8211; 添加我在 XXX 拍照 如果我在户外，拿着手机，我很喜欢用着两个功能。他是在 web 网站上没有的，也是手机特有的。                         3.  Foursquare                             以一个动作为核心 check in                             [...]]]></description>
			<content:encoded><![CDATA[<p>经过一段时间的 iphone 开发和设计，在设计功能的时候也收到了一些以前设计 web 网站功能的影响<br />
总结了一些体会：</p>
<p>*********<br />
分析:<br />
*********</p>
<p>1. 校内 iphone app - </p>
<p>校内本身网站功能是很复杂的，iphone 端做了很多取舍（即时聊天没有在里面）<br />
总结起来他们突出了3个功能: 看好友动态；评论分享；<span style="color: #ff0000;">照相上传，</span></p>
<p>他们在两个频道右上角都有 照相机的 图标，有效利用了手机上这个移动的镜头， 这个是 web 网站上没有的应该突出。</p>
<p><a href="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0012.png"><img class="alignnone size-full wp-image-512" title="IMG_0012" src="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0012.png" alt="IMG_0012" width="320" height="480" /></a><br />
        </p>
<p>2. 新浪微薄<br />
写微博2个突出功能（和 web 网站不同）：<br />
<span style="color: #ff0000;">坐标 &#8211; 添加我在 XXX<br />
拍照</span></p>
<p>如果我在户外，拿着手机，我很喜欢用着两个功能。他是在 web 网站上没有的，也是手机特有的。<br />
<a href="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0013.png"><img class="alignleft size-full wp-image-510" title="IMG_0013" src="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0013.png" alt="IMG_0013" width="320" height="480" /></a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>3.  Foursquare<br />
                            以一个动作为核心 check in<br />
                            用到 <span style="color: #ff0000;">坐标</span></p>
<p>4. GyPSii 图钉网<br />
手机端：<br />
核心足迹功能<br />
<span style="color: #ff0000;">坐标 + 照片</span></p>
<p>web端<br />
类似 sns 的复杂功能</p>
<p><a href="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0011.png"><img class="alignnone size-full wp-image-511" title="IMG_0011" src="http://www.wangchao123.com/wp-content/uploads/2010/06/IMG_0011.png" alt="IMG_0011" width="320" height="480" /></a></p>
<p>********<br />
总结<br />
********</p>
<p>手机端两个核心功能: <span style="color: #ff0000;">坐标， 拍照片。</span> （不要让 GPS 和 摄像头闲下来）</p>
<p>我们手机的 GPS 特性已经发挥了一些，下面可以考虑 照相功能 能不能 发挥一下，突出这个功能的同时，会同时突出会员功能 因为一定和会员提供的照片。</p>
<p>         我们可以设计出一个到两个动作,是我们的核心动作。</p>
<p>一开始我们设计的功能比较多, 之间的交叉也比较多。</p>
<p>         我们需要把手机端的功能尽量简化，把流程比较长的，和坐标，及时性无关的操作放到网站上，剩下精华的，很简单的操作放在手机端。</p>
<p>****************<br />
功能的本地化<br />
****************</p>
<p> 在国内比较本地的功能点:<br />
                           <br />
1. 交友   -       可以结合自拍，和场所，设计交互的功能。<br />
2. 贴图   -       利用拍摄功能，在显著的位置显示网友上传的真实照片 （甚至可以用网友最新拍摄的图作为 venue 的图标,不断更新像GyPSii）<br />
3. 突出 平民网友发布的攻略，省钱秘笈，特色小店 （对于官方的评价，官方介绍，这个对我们国内用户更有吸引力）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2010/06/10/504/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iphone app 功能设计分析</title>
		<link>http://www.wangchao123.com/2010/06/04/503</link>
		<comments>http://www.wangchao123.com/2010/06/04/503#comments</comments>
		<pubDate>Fri, 04 Jun 2010 06:39:26 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/2010/06/04/503</guid>
		<description><![CDATA[1. 尽量在一页做尽量少的事情 2. 同一功能尽量只有一个入口 3. table bar 很重要 4. 用原有 iphone 默认控件，让体验更顺畅。 5. 社交型APP 尽量少的给用户登出，重新注册的机会，一台手机绑定一个账号，他的价值很大。(gowalla 甚至没有给用户登出功能)]]></description>
			<content:encoded><![CDATA[<p>1. 尽量在一页做尽量少的事情<br />
2. 同一功能尽量只有一个入口<br />
3. table bar 很重要<br />
4. 用原有 iphone 默认控件，让体验更顺畅。<br />
5. 社交型APP</p>
<p>尽量少的给用户登出，重新注册的机会，一台手机绑定一个账号，他的价值很大。(gowalla 甚至没有给用户登出功能)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2010/06/04/503/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS iphone 开发起步 初级教程 hello world (转)</title>
		<link>http://www.wangchao123.com/2009/12/07/458</link>
		<comments>http://www.wangchao123.com/2009/12/07/458#comments</comments>
		<pubDate>Sun, 06 Dec 2009 16:42:02 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=458</guid>
		<description><![CDATA[一、 确定Mac OS的版本号 版本号：Mac OS X version 10.5.5 CPU: Processor 1 GHz PowerPC G4 iPhone SDK:iPhone_sdk_for_iPhone_os_2.2.19m2621afinal.dmg 说明：每个IPhone SDK可能兼容的Mac OS都不同，该SDK支持10.5.3以后的版本。还有，Intel 和 PowerPC 不同的CPU设置文件也不同，同一种CPU不同型号，设置也不同（注意PowerPC G3/G4/G5不同型号），详细请看下文。 重点的是：官方的iPhone SDK只支持Intel Mac with OSX 10.5. 二、 安装IPhone SDK 1. iPhone sdk 的后缀名为.dmg,只要双击该文件，弹出一个对话框，点“skip”,这就看到里面有3个文件，分别是About iPhone SDK.pdf 、iphone sdk.mpkg 、 Packages.如下图： 2. 双击iPhone sdk.mpkg,按引导到Custom Install on”Macintosh HD”那步，如图： 这是会看到iPhone SDK不可选，不知道是什么问题，不用害怕，下面有解决方案，我们是把可选的都选了，让所有的包都安装到默认的路径下。 注意： Developer Tools Essentials那个包的安装路径（默认为/Developer），等下安装iPhone SDK 时需要安装到同一路径下。 其实这一步已经安装好了Xcode3.1 了。 3. 安装iPhone SDK. 进入到刚才的前面.mdg包里面的Packages文件夹，即第一张图中的Packages文件夹,选择如下5个包逐个安装。各个包名均以iphone*开头。 注意： 要安装到和Developer Tools Essentials同一目录，即/Developer 如果已经安装到其他目录，可以不用重装。进入到安装目录，默认是/Platforms，然后复制 iPhone.platform 和iPhoneSimulator.platform 到 /Developer/Platform，注意不要把整个/Platforms复制。 现在还不能建立iphone 项目，就算建好也编译不过。出现如下错误： No architectures to compile for (ONLY_ACTIVE_ARCH = YES, active arch = ppc, i386 VALID_ARCHS =) 所以需要进一步配置文件 4. 配置Architectures.xcspec文件 因为官方的iPhone SDK只支持Intel Mac with OSX 10.5.。所以要更改所有intel的配置。 进入到  /Developer/Platforms/iPhoneSimulator.platform/Developer/ Library/Xcode/Specifications/，你会看到3个文件，修改其中的Architectures.xcspec文件 注意：不要用copy内页代码来改，要用手动输入，因为网页编码不一致问题。 具体修改如下： ( // 32-Bit { Type = Architecture; Identifier = Standard; Name = ”Standard (iPhone Simulator: i386, ppc)”; Description = ”32-bit iPhone Simulator architectures”; ListInEnum = YES; SortNumber = 1; RealArchitectures = ( i386, ppc ); ArchitectureSetting = ”ARCHS_STANDARD_32_BIT”; }, // Old-style Debug { Type = Architecture; Identifier = Native; Name = ”Native Architecture of Build Machine”; Description = ”32-bit for build machine”; ListInEnum = YES; SortNumber = 101; ArchitectureSetting = ”NATIVE_ARCH”; }, // G3 { Type = Architecture; Identifier = ppc; Name = ”Minimal (32-bit PowerPC only)”; Description = ”32-bit PowerPC ”; PerArchBuildSettingName = ”PowerPC”; ByteOrder = big; ListInEnum = No; SortNumber = 201; [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-INDENT: 2em">一、 确定Mac OS的版本号</p>
<p style="TEXT-INDENT: 2em">版本号：Mac OS X version 10.5.5</p>
<p style="TEXT-INDENT: 2em">CPU: Processor 1 GHz PowerPC G4</p>
<p style="TEXT-INDENT: 2em">iPhone SDK:iPhone_sdk_for_iPhone_os_2.2.19m2621afinal.dmg</p>
<p style="TEXT-INDENT: 2em">说明：每个IPhone SDK可能兼容的Mac OS都不同，该SDK支持10.5.3以后的版本。还有，Intel 和 PowerPC 不同的CPU设置文件也不同，同一种CPU不同型号，设置也不同（注意PowerPC G3/G4/G5不同型号），详细请看下文。</p>
<p style="TEXT-INDENT: 2em">重点的是：官方的iPhone SDK只支持Intel Mac with OSX 10.5.</p>
<p style="TEXT-INDENT: 2em">二、 安装IPhone SDK</p>
<p style="TEXT-INDENT: 2em">1. iPhone sdk 的后缀名为.dmg,只要双击该文件，弹出一个对话框，点“skip”,这就看到里面有3个文件，分别是About iPhone SDK.pdf 、iphone sdk.mpkg 、 Packages.如下图：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.wangchao123.com/wp-content/uploads/2009/12/b1.jpg" target="_blank"><img title="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" src="http://www.wangchao123.com/wp-content/uploads/2009/12/b1.jpg" alt="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" /></a></p>
<p style="TEXT-INDENT: 2em">2. 双击iPhone sdk.mpkg,按引导到Custom Install on”Macintosh HD”那步，如图：</p>
<p style="TEXT-INDENT: 2em"><a href="httphttp://www.wangchao123.com/wp-content/uploads/2009/12/b2.jpg" target="_blank"><img title="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" src="http://www.wangchao123.com/wp-content/uploads/2009/12/b2.jpg" alt="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" /></a></p>
<p style="TEXT-INDENT: 2em">这是会看到iPhone SDK不可选，不知道是什么问题，不用害怕，下面有解决方案，我们是把可选的都选了，让所有的包都安装到默认的路径下。</p>
<p style="TEXT-INDENT: 2em">注意： Developer Tools Essentials那个包的安装路径（默认为/Developer），等下安装iPhone SDK 时需要安装到同一路径下。</p>
<p style="TEXT-INDENT: 2em">其实这一步已经安装好了Xcode3.1 了。</p>
<p style="TEXT-INDENT: 2em">3. 安装iPhone SDK.</p>
<p style="TEXT-INDENT: 2em">进入到刚才的前面.mdg包里面的Packages文件夹，即第一张图中的Packages文件夹,选择如下5个包逐个安装。各个包名均以iphone*开头。</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.wangchao123.com/wp-content/uploads/2009/12/b3.jpg" target="_blank"><img title="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" src="http://www.wangchao123.com/wp-content/uploads/2009/12/b3.jpg" alt="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" /></a></p>
<p style="TEXT-INDENT: 2em">注意：</p>
<p style="TEXT-INDENT: 2em">要安装到和Developer Tools Essentials同一目录，即/Developer</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.wangchao123.com/wp-content/uploads/2009/12/b4.jpg" target="_blank"><img title="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" src="http://www.wangchao123.com/wp-content/uploads/2009/12/b4.jpg" alt="IPhone开发环境搭建全过程 - jsc0754 - 单车音乐~~" /></a></p>
<p style="TEXT-INDENT: 2em">如果已经安装到其他目录，可以不用重装。进入到安装目录，默认是/Platforms，然后复制 iPhone.platform 和iPhoneSimulator.platform 到 /Developer/Platform，注意不要把整个/Platforms复制。</p>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">现在还不能建立iphone 项目，就算建好也编译不过。出现如下错误：</p>
<p style="TEXT-INDENT: 2em">No architectures to compile for (ONLY_ACTIVE_ARCH = YES, active arch = ppc, i386 VALID_ARCHS =)</p>
<p style="TEXT-INDENT: 2em">所以需要进一步配置文件</p>
<p style="TEXT-INDENT: 2em">4. 配置Architectures.xcspec文件</p>
<p style="TEXT-INDENT: 2em">因为官方的iPhone SDK只支持Intel Mac with OSX 10.5.。所以要更改所有intel的配置。</p>
<p style="TEXT-INDENT: 2em">进入到  /Developer/Platforms/iPhoneSimulator.platform/Developer/</p>
<p style="TEXT-INDENT: 2em">Library/Xcode/Specifications/，你会看到3个文件，修改其中的Architectures.xcspec文件</p>
<p style="TEXT-INDENT: 2em">注意：不要用copy内页代码来改，要用手动输入，因为网页编码不一致问题。</p>
<p style="TEXT-INDENT: 2em">具体修改如下：</p>
<p style="TEXT-INDENT: 2em">(</p>
<p style="TEXT-INDENT: 2em">// 32-Bit</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = Standard;</p>
<p style="TEXT-INDENT: 2em">Name = ”Standard (iPhone Simulator: i386, ppc)”;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit iPhone Simulator architectures”;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = YES;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 1;</p>
<p style="TEXT-INDENT: 2em">RealArchitectures = ( i386, ppc );</p>
<p style="TEXT-INDENT: 2em">ArchitectureSetting = ”ARCHS_STANDARD_32_BIT”;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">// Old-style Debug</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = Native;</p>
<p style="TEXT-INDENT: 2em">Name = ”Native Architecture of Build Machine”;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit for build machine”;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = YES;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 101;</p>
<p style="TEXT-INDENT: 2em">ArchitectureSetting = ”NATIVE_ARCH”;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">// G3</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = ppc;</p>
<p style="TEXT-INDENT: 2em">Name = ”Minimal (32-bit PowerPC only)”;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit PowerPC ”;</p>
<p style="TEXT-INDENT: 2em">PerArchBuildSettingName = ”PowerPC”;</p>
<p style="TEXT-INDENT: 2em">ByteOrder = big;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = No;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 201;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">// G4  这个是我台机的型号</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = ppc7400;</p>
<p style="TEXT-INDENT: 2em">Name = ”PowerPC G4&#8243;;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit PowerPC for G4 processor”;</p>
<p style="TEXT-INDENT: 2em">ByteOrder = big;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = NO;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 202;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">// G5 32-bit</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = ppc970;</p>
<p style="TEXT-INDENT: 2em">Name = ”PowerPC G5 32-bit”;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit PowerPC for G5 processor”;</p>
<p style="TEXT-INDENT: 2em">ByteOrder = big;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = NO;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 203;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">// Intel</p>
<p style="TEXT-INDENT: 2em">{ Type = Architecture;</p>
<p style="TEXT-INDENT: 2em">Identifier = i386;</p>
<p style="TEXT-INDENT: 2em">Name = ”Intel”;</p>
<p style="TEXT-INDENT: 2em">Description = ”32-bit Intel”;</p>
<p style="TEXT-INDENT: 2em">PerArchBuildSettingName = ”Intel”;</p>
<p style="TEXT-INDENT: 2em">ByteOrder = little;</p>
<p style="TEXT-INDENT: 2em">ListInEnum = NO;</p>
<p style="TEXT-INDENT: 2em">SortNumber = 105;</p>
<p style="TEXT-INDENT: 2em">},</p>
<p style="TEXT-INDENT: 2em">)</p>
<p style="TEXT-INDENT: 2em">注意：不要copy，只能手输入以上代码，否则出错！！</p>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em">这样就完成设置了。</p>
<p style="TEXT-INDENT: 2em">=====================================================================</p>
<p style="TEXT-INDENT: 2em">打开/Developer/Applications/选择Xcode,程序并不会马上<span onclick="tagshow(event)">运行</span>,而是要你到快捷方式里再次点击打开.</p>
<p>打开File-&gt;new project选择View-Based Application</p>
<p><img id="img_0.6076933892962835" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2009/12/090603k93.jpg" alt="" width="478" height="387" /></p>
<p>输入<span onclick="tagshow(event)">项目</span>名称.</p>
<p><img id="img_0.16496537864541938" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2009/12/090605spA.jpg" alt="" width="479" height="389" /></p>
<p>接下来看到的就是常见的<span onclick="tagshow(event)">文档</span>视图,在Groups&amp;Files下Resources里双击MainWindws.xib,紧接着将看到有新窗口的打开;</p>
<p><img id="img_0.42260672565168405" style="CURSOR: pointer" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2009/12/090607HAz.jpg" alt="" width="600" height="375" /></p>
<p>这时你可以拖动LIbery里的<span onclick="tagshow(event)">控件</span>,像VS.net里一样使用就可以啦,运行行先保存,File-&gt;Save,运行Build and run.</p>
<p><img id="img_0.2472348211003348" src="http://www.wangchao123.com/wp-content/uploads/auto_save_image/2009/12/090608iHj.jpg" alt="" width="393" height="705" /></p>
<p>这么一来,一个简单的HelloWorld就完成啦,兴喜.</p>
<p>另外还发现,IPhone的<span onclick="tagshow(event)">模拟</span>器启动很快,基本不用时间哦,这点比其它强吧!展开Groups&amp;Files 下的 Resources目录，选择双击MainWindow.xib,就会弹出xib主窗口和libery窗口，如果没有，可以通过Tools来调出窗口。Libery里有不同的控件，可以拖放到View窗口里，单击选中控件，选择Tools-&gt;inspetor打开属性窗口修改控件属性。</p>
<p style="TEXT-INDENT: 2em">然后File-&gt;Save，Build-&gt;build and run.</p>
<p style="TEXT-INDENT: 2em">大功告成！！</p>
<p style="TEXT-INDENT: 2em">参考网站：</p>
<p style="TEXT-INDENT: 2em"><a href="http://www.devdiv.net/thread-11230-1-1.html">http://www.devdiv.net/thread-11230-1-1.html</a></p>
<p style="TEXT-INDENT: 2em"><a href="http://jsc0754.blog.163.com/blog/static/1038922452009281156410/">http://jsc0754.blog.163.com/blog/static/1038922452009281156410/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2009/12/07/458/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>10个iPhone开发教学网站、论坛、博客 (转)</title>
		<link>http://www.wangchao123.com/2009/11/17/402</link>
		<comments>http://www.wangchao123.com/2009/11/17/402#comments</comments>
		<pubDate>Tue, 17 Nov 2009 13:10:35 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[iphone Mac 手机应用开发]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=402</guid>
		<description><![CDATA[整理了一下手中的iPhone开发网站、论坛和博客，精选了这10个常去的网站。其中有2篇教学文章，由于非常经典，于是单列出来，与其网站并列。本文的短网址为 http://bit.ly/3llz7建议新入行的朋友在看教学文章的同时多上论坛，与大家交流，偶尔看看别人的自曝，自己也会信心倍增。另外，实践最重要，首先行动起来。http://cocoachina.com/ 大量iPhone开发资料，教学，经验，还有自曝。http://www.javaeye.com/forums/board/mobile iPhone开发论坛，人气鼎盛，大量自曝，还有Android的讨论 http://developer.apple.com/iphone/ 苹果iPhone开发官方主页，提供大量实例、文档和教学视频 http://www.stanford.edu/class/cs193p/ 斯坦福大学的iPhone课程，2009年4～6月，有pdf和视频下载 http://bit.ly/RuaKq 飞机游戏iFighter的作者dr_watson写的iPhone游戏开发经典教学系列，有源码 http://www.iphoneside.com/ iPhone达人的博客，很多有价值的资源下载，新闻和教程 http://lichen1985.com/blog/ iPhone应用的作者，雨雪霏霏的iPhone博客，很多开发手记和心得 http://blog.liuhongwei.cn/category/iphone/ iPhone开发博客，提供教学文章，经验分享，还有GAE http://www.otierney.net/objective-c.html.zh-tw.big5#piecing   文档 web 版本 http://www.javaeye.com/topic/422948 iPhone日本市场高手的自曝贴，第1个月就赚了2千刀，大量详细的数字和图片http://dev.iphonetw.net/ 台湾iPhone开发者论坛，有些教学文章和讨论 http://devforums.apple.com/ http://www.iphonedevsdk.com/ http://stackoverflow.com/questions/tagged/iphone http://forums.macrumors.com/forumdisplay.php?f=135 http://www.aboutobjects.com/tutorials.html]]></description>
			<content:encoded><![CDATA[<ul>
<li>整理了一下手中的iPhone开发网站、论坛和博客，精选了这10个常去的网站。其中有2篇教学文章，由于非常经典，于是单列出来，与其网站并列。本文的短网址为 <a rel="nofollow" href="http://bit.ly/3llz7" target="_blank">http://bit.ly/3llz7</a>建议新入行的朋友在看教学文章的同时多上论坛，与大家交流，偶尔看看别人的自曝，自己也会信心倍增。另外，实践最重要，首先行动起来。<a rel="nofollow" href="http://cocoachina.com/" target="_blank">http://cocoachina.com/</a> 大量iPhone开发资料，教学，经验，还有自曝。<a rel="nofollow" href="http://www.javaeye.com/forums/board/mobile" target="_blank">http://www.javaeye.com/forums/board/mobile</a> iPhone开发论坛，人气鼎盛，大量自曝，还有Android的讨论
<p><a rel="nofollow" href="http://developer.apple.com/iphone/" target="_blank">http://developer.apple.com/iphone/</a> 苹果iPhone开发官方主页，提供大量实例、文档和教学视频</p>
<p><a rel="nofollow" href="http://www.stanford.edu/class/cs193p/" target="_blank">http://www.stanford.edu/class/cs193p/</a> 斯坦福大学的iPhone课程，2009年4～6月，有pdf和视频下载</p>
<p><a rel="nofollow" href="http://bit.ly/RuaKq" target="_blank">http://bit.ly/RuaKq</a> 飞机游戏iFighter的作者dr_watson写的iPhone游戏开发经典教学系列，有源码</p>
<p><a rel="nofollow" href="http://www.iphoneside.com/" target="_blank">http://www.iphoneside.com/</a> iPhone达人的博客，很多有价值的资源下载，新闻和教程</p>
<p><a rel="nofollow" href="http://lichen1985.com/blog/" target="_blank">http://lichen1985.com/blog/</a> iPhone应用的作者，雨雪霏霏的iPhone博客，很多开发手记和心得</p>
<p><a rel="nofollow" href="http://blog.liuhongwei.cn/category/iphone/" target="_blank">http://blog.liuhongwei.cn/category/iphone/</a> iPhone开发博客，提供教学文章，经验分享，还有GAE</li>
<li><a href="http://www.otierney.net/objective-c.html.zh-tw.big5#piecing">http://www.otierney.net/objective-c.html.zh-tw.big5#piecing</a>   文档 web 版本</li>
<li><a rel="nofollow" href="http://www.javaeye.com/topic/422948" target="_blank">http://www.javaeye.com/topic/422948</a> iPhone日本市场高手的自曝贴，第1个月就赚了2千刀，大量详细的数字和图片<a rel="nofollow" href="http://dev.iphonetw.net/" target="_blank">http://dev.iphonetw.net/</a> 台湾iPhone开发者论坛，有些教学文章和讨论</li>
<li><a href="http://devforums.apple.com/">http://devforums.apple.com/</a><br />
<a href="http://www.iphonedevsdk.com/">http://www.iphonedevsdk.com/</a><br />
<a href="http://stackoverflow.com/questions/tagged/iphone">http://stackoverflow.com/questions/tagged/iphone</a><br />
<a href="http://forums.macrumors.com/forumdisplay.php?f=135">http://forums.macrumors.com/forumdisplay.php?f=135</a><br />
<a href="http://www.aboutobjects.com/tutorials.html">http://www.aboutobjects.com/tutorials.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2009/11/17/402/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

