<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="http://www.yifeiyang.net/styles/rss.css" type="text/css"?>
<!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>YIFEIYANG</title>
	<link>http://www.yifeiyang.net</link>
	<description>易飞扬的博客</description>
	<lastBuildDate>Sun, 19 Feb 2012 10:48:41 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>iPhone开发之深入浅出 (3) &#8212; ARC之前世今生</title>
		<description>

Objective-C 内存管理




基本原则


编程准则




ARC 诞生




__strong


__weak


__autoreleasing


ARC 规则








iPhone开发之深入浅出 (3) &#8212; ARC之前世今生


前两节我们对 ARC(Automatic Reference Counting) 有了一个基本的理解，但是 ARC 是怎么产生的，为什么苹果要在其最新的 iOS/Mac OS X 上导入该框架？ 如果不理解其背后的基本原理，只是死记硬背那些规则/方法，是毫无意义的。就像我们从小接受的填鸭式教育，基本上到后来都还给老师了。

本节，我们先来看看 ARC 产生之前的 Objective-C 内存管理世界，然后再来看看导入 ARC 后，新的 LLVM 编译器在背后为我们做了什么。

Objective-C 内存管理

和许多面向对象语言一样，Objective-C 中内存管理的方式其实就是指 引用计数 （Reference Counting）的使用准则。如下图所示，对象生成的时候必定被某个持有者拿着，如果有多个持有者的话，其引用计数就会递增；相反失去一个持有者那么引用计数即会递减，直到失去所有的持有者，才真正地从内测中释放自己。






基本原则


内存管理的依循下面的基本原则



自己生成的对象，那么既是其持有者
不是自己生成的对象，也可成为其持有者（一个对象可以被多个人持有）
如果不想持有对象的时候，必须释放其所有权
不能释放已不再持有所有权的对象



结合 Objective-C 语言中的方法，我们来看看基本的内存管理。


  
    
      方法
      ...</description>
		<link>http://www.yifeiyang.net/development-of-the-iphone-simply-3/</link>
			</item>
	<item>
		<title>iPhone开发技巧之发布篇（7）&#8212;  制作自己的Cydia发布源</title>
		<description> Linux Debian   脚本工具   制作deb文件   制作Repository 
iPhone开发技巧之发布篇（7）— 制作自己的Cydia发布源

针对越狱的iPhone，大家肯定都知道用Cydia来安装各种免费应用的经历。Cydia中是否能指定我们自己的发布源，让我们自己随心所欲地发布程序给别人呢？答案是肯定的，我们只要创建Cydia的发布repository即可。
Linux Debian
首先，我们需要有Linux Debian或者Ubuntu系统来制作Cydia的发布源。如果你没有Linux Debian系统的机器，不要紧，可以随时用VMware Player或VirtualBox虚拟机来安装一个。

安装的时候用i386的iso即可，如果是64bit的OS用amd64的image来安装。安装的时候，选择Graphical Install，其他缺省安装。
脚本工具
下载下面两个脚本文件到本地，并加上可执行属性。


	下载dpkg-scanpackages到/usr/bin
	下载dpkg-gettext.pl到/etc/perl。

制作deb文件
 以名称为MyProgram的程序微粒，首先在home目录下建立下面的目录结构  





1
2
3
4
5
6
7
8
9
10


Cydia
   +- MyProgram
      +- DEBIAN
      &#124;  +- control
      +- var
  ...</description>
		<link>http://www.yifeiyang.net/iphone-release-of-developing-skills-paper-7/</link>
			</item>
	<item>
		<title>iPhone开发之深入浅出 (2) &#8212; ARC之@property使用</title>
		<description> 所有者属性   读写相关的属性 (readwrite, readonly)       iPhone开发之深入浅出 (2) &#8212; ARC之@property使用    上一回我们学到了一些ARC的基本概念，这一次我们来看看ARC对@property的使用规则有何影响。  所有者属性  我们先来看看与所有权有关系的属性，关键字间的对应关系。                 属性值       关键字  ...</description>
		<link>http://www.yifeiyang.net/development-of-the-iphone-simply-2/</link>
			</item>
	<item>
		<title>iPhone开发之深入浅出 (1) &#8212; ARC是什么</title>
		<description>  ARC是什么     变化点   使用ARC的好处   不好的地方     ARC基本规则     Objective-C对象   引用关键字     总结       iPhone开发之深入浅出 (1) &#8212; ARC是什么   新年伊始，万象更新。新一年开始，我们来更加深入了解一下iPhone开发的内部。作为开始，我们先来了解一下ARC。  ARC是什么  ARC是iOS 5推出的新功能，全称叫 ...</description>
		<link>http://www.yifeiyang.net/development-of-the-iphone-simply-1/</link>
			</item>
	<item>
		<title>iPhone开发技巧之发布篇（6）&#8212;   不需Developper认证的真机调试方法</title>
		<description>  制作证明书   程序设置   署名   验证      iPhone开发技巧之发布篇（6）&#8212; 不需Developper认证的真机调试方法   以前，iPhone开发入门（10）--- 设备上运行程序中介绍了正式注册iPhone/iOS Developer Program后在设备运行程序的方法；在iPhone开发入门（3）—Linux上构筑iPhone OS3.1.2开发环境 和 iPhone开发进阶（4） --- 使用Makefile自动编译iPhone程序 也简单介绍了在越狱机器上运行程序的方法。  今天给大家介绍另一种不需要注册iPhone/iOS Developer Program，也可以简单地在设备中运行程序的方法.  制作证明书   首先通过Keychain制作一个新的证明书 Keychain Access -&#62; Certificate Assistant -&#62; Create a Certification  ...</description>
		<link>http://www.yifeiyang.net/iphone-release-of-developing-skills-paper-6/</link>
			</item>
	<item>
		<title>敏捷开发实践（2） &#8212; 敏捷软件开发者的习惯</title>
		<description>  敏捷开发者的态度   敏捷开发者的习惯       敏捷开发实践（2） &#8212; 敏捷软件开发者的习惯    敏捷开发的最小单位就是参与敏捷开发的个人。将这些敏捷开发者聚集起来，就形成了敏捷开发团队。  正如上回介绍的，敏捷开发是一种以人为核心、迭代、循序渐进的开发方法，它以最大可能地发挥团队的作用为目的。根据需要，随时改善，以降低软件开发中的风险。  敏捷开发者的态度  敏捷开发者首先需要有忠实，勤恳的态度，在此之上要有持续改善和迅速达成目标的紧迫感。如何让开发者养成敏捷的心态，如何磨练开发者敏捷的意志，让开发者了解敏捷的习惯很重要。  习惯来自于经验，习惯需要用实践来养成。我们来看看作为敏捷软件开发者必备的4种技能 ：   编故事（Creating Stories）  这里不是让你去写一部小说，而是让开发者站在用户的视点，用用户能理解的词汇描述软件系统的机能，行为。只有理解了用户真正的需求，我们才能写出真正需要的软件。  制定计划（Planning）  敏捷开发并不是没有计划就投入编码。指定计划也是很重要的，但是与以往的开发计划不同，敏捷的计划是随着开发的实际情况改变而随时制定并改善的。所以说敏捷开发的计划的作成、修改的频度很高，需要尽可能高效地完成每次制定的计划。  测试驱动开发（Test-Driven Development）  它的基本思想就是在开发功能代码之前，先编写测试代码。也就是说在明确要开发某个功能后，首先思考如何对这个功能进行测试，并完成测试代码的编写，然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能，直到完成全部功能的开发。  重构（Refactoring）  没有最好，只有更好。软件开发也不例外，任何时候我们都可以对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。    ...</description>
		<link>http://www.yifeiyang.net/agile-development-practice-2/</link>
			</item>
	<item>
		<title>iPhone开发技巧之环境篇（11） &#8212;  让Xcode对应多个版本的iOS SDK</title>
		<description>  安装新版Xcode时备份旧版SDK   在Xcode内安装旧版的SDK   由于编译SDK版本不同而引起的编译/运行期错误处理      iPhone开发技巧之环境篇（11）&#8212; 让Xcode对应多个版本的iOS SDK   每次Xcode升级，以前的iOS SDK都会被覆盖掉；这是许多人碰到并头疼的问题&#8212;-如果想用旧版本的SDK编译就没有办法了。  这里就介绍一下Xcode与多个SDK版本并存的方法。针对Xcode的安装顺序总结了两种方法 ：  安装新版Xcode时备份旧版SDK  这是最简单的方法 &#8212;- 每当安装新版的Xcode时，备份之前旧的SDK，安装Xcode之后，回复到指定目录下即可。   备份SDK路径       
1
2
3
4
5

iOS &#35774;&#22791;&#29992;
$ /Developer/Platforms/iPhoneOS.platform/Developer/SDKs

iPhone &#27169;&#25311;&#22120;&#29992;
$ /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs



简单起见，在安装新版Xcode之前，可以把这两个目录下的需要备份的SDK版本move到其他目录下，安装完Xcode之后再move回来即可。


在Xcode内安装旧版的SDK

已经安装好的Xcode上，想安装旧版的SDK也是可以的，只是需要一些准备。下面从安装新版Xcode开始，再到之后安装旧版SDK做一个简要说明。


首先我们删除之前已安装的Xcode







1

$ sudo /Developer/Library/uninstall-devtools --mode=all



然后，安装从Apple Developer上下载的最新Xcode dmg安装包。完成Xcode的安装。

接下来，从iPhone Software ...</description>
		<link>http://www.yifeiyang.net/the-environment-of-developing-skills-iphone-paper-11/</link>
			</item>
	<item>
		<title>iPhone开发技巧之发布篇（5）&#8212; 在程序中添加广告</title>
		<description>  iAd     追加iAD Framework   创建ADBannerView     AdMob     登陆   注意点   例程        iPhone开发技巧之发布篇（5）&#8212; 在程序中添加广告   iPhone/iPad的程序，即使是Free的版本，也可以通过广告给我们带来收入。前提是你的程序足够吸引人，有足够的下载量。  这里，我将介绍一下程序中集成广告的方法。主要有两种广告iAd和AdMob。（还有其他多种可被植入的广告SDK，这里就不都一一介绍了）  iAd       ...</description>
		<link>http://www.yifeiyang.net/iphone-development-skills-of-the-articles-published-5-add-an-ad-in-the-program/</link>
			</item>
	<item>
		<title>iPhone开发技巧之环境篇（10）&#8212; 在控制台调试iPhone应用程序</title>
		<description>iPhone开发技巧之环境篇（10）— 在控制台调试iPhone应用程序

使用Xcode调试程序的时候，是否觉得有时候运行速度太慢。用Xcodebuild编译好程序之后，Xcode作为IDE纯粹是为了debug，使用iPhone模拟器而用的。其实iPhone模拟器只是Xcode自带的一个工具，不需要Xcode也可以启动的。这里，我们来看看一个叫做iphonesim的东东，通过控制台来模拟调试我们的iPhone程序。有了它就可以解决Xcode过于庞大，运行速度慢的问题。

首先，我们从github上下载了程序源码，通过Xcode编译。这之后iphonesim接生成了，可以通过命令行来使用它。

 比如我调试一个Test.app的程序  





1
2
3
4
5
6


 $ pwd
 /Users/Tester/Downloads/iphonesim/build/Debug
 $ ./iphonesim launch ~/Desktop/Fac/Test/build/Debug-iphonesimulator/Test.app
 [DEBUG] App Spec: 〜
 [DEBUG] SDK Root: 〜
 [DEBUG] Session started




OK, 从控制台我们启动了iPhone模拟器，这并没有Xcode的参与。这之后可以使用iphonesim+gdb的组合来调试我们的程序了。

结合之前iPhone开发技巧之环境篇（1）--- 使用Emacs开发iPhone应用程序中介绍的那样，我们就可以实现Xcodebuild+iphonesim+gdb的完美组合，不需要启动又大又重的Xcode。

通过控制台调用模拟器的方法，我们可以很轻松地实现自动化的程序单体测试，产品发布前的结合测试... </description>
		<link>http://www.yifeiyang.net/iphone-development-skills-of-the-environment-chapter-10-iphone-application-in-the-debug-console/</link>
			</item>
	<item>
		<title>敏捷开发实践（1） &#8212; 走进敏捷软件开发</title>
		<description>  敏捷开发是什么   为什么要使用敏捷开发   敏捷开发的现状与将来       敏捷开发实践（1） &#8212; 走进敏捷软件开发    敏捷开发是什么  敏捷软件开发是一个概念意义上的框架，用来取代软件工程项目的概念；它强调在项目的整个生命周期中，拥抱并促进由于软件进化式的发展所带来的变化。  简单的说，敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中，软件项目的构建被切分成多个子项目，各个子项目的成果都经过测试，具备集成和可运行的特征。换言之，就是把一个大项目分为多个相互联系，但也可独立运行的小项目，并分别完成，在此过程中软件一直处于可使用状态。  敏捷开发中涵盖多种开发元素：迭代开发，增量交付，测试驱动，结对编程，Usecase驱动，持续集成，重构等。我们知道软件开发项目中式样变更，需求变更是影响开发进度、成败的重要因素，而敏捷开发元素的利用可以有效地规避这些风险、变化。学会如何识别变化的大势，并在可能的时候，促使变化向好的方向发展。这是软件项目进化的趋势。   最后我们看看敏捷开发宣言    个体与交互 重于 过程和工具 可用的软件 重于 完备的文档 客户协作   重于 合同谈判 响应变化   重于 遵循计划 ...</description>
		<link>http://www.yifeiyang.net/agile-development-practices-1-about-agile-software-development/</link>
			</item>
</channel>
</rss>

