<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_VinceYuan</title><subtitle type="text">Personal Blog</subtitle><id>http://feed.cnblogs.com/blog/u/8817/rss</id><updated>2011-02-24T07:28:04Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/8817/rss"/><entry><id>http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1681062.html</id><title type="text">iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool</title><summary type="text">在生成新的Run Loop的时候，系统会自动创建新的autorelease pool</summary><published>2010-03-08T13:14:00Z</published><updated>2010-03-08T13:14:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1681062.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1681062.html"/><content type="html">&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;版权声明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;此文版权归作者&lt;/span&gt;Vince Yuan (vince.yuan#gmail.com)&lt;span style="font-family: 宋体"&gt;所有。欢迎非营利性转载，转载时必须包含原始链接&lt;/span&gt;&lt;a href="http://vinceyuan.cnblogs.com/" target="_blank"&gt;http://vinceyuan.cnblogs.com/&lt;/a&gt;&lt;span style="font-family: 宋体"&gt;，且必须包含此版权声明的完整内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;版本&lt;/span&gt; 1.1&amp;nbsp;&lt;span style="font-family: 宋体"&gt;发表于&lt;/span&gt;2010-03-08&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;四&lt;/span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;系统自动创建新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在生成新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Run Loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的时候，系统会自动创建新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;（非常感谢网友&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;hhyytt&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;neogui&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的提醒）。注意，此处不同于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;xcode&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在新建项目时自动生成的代码中加入的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;xcode&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;生成的代码可以被删除，但系统自动创建的新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;是无法删除的（对于无&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Garbage Collection&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的环境来说）。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Objective-C&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;没有给出实现代码，官方文档也没有说明，但我们可以通过小程序来证明。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在这个小程序中，我们先生成了一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，然后生成一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的实例，再在一个新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;run loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中生成一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的对象（注意，我们并没有手动在新&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;run loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中生成&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;）。&lt;a name="OLE_LINK2"&gt;&lt;/a&gt;&lt;a name="OLE_LINK1"&gt;&lt;span style="mso-bookmark: OLE_LINK2"&gt;精简的示例代码如下，详细代码请见附件中的&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="mso-bookmark: OLE_LINK1"&gt;&lt;span style="mso-bookmark: OLE_LINK2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;memman-run-loop-with-pool.m&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: OLE_LINK1"&gt;&lt;span style="mso-bookmark: OLE_LINK2"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;int main(int argc, char**argv)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"create an autorelasePool\n");&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"create an instance of ClassA and autorelease\n");&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassA *obj1 = [[[ClassA alloc] init] autorelease];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSDate *now = [[NSDate alloc] init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSTimer *timer = [[NSTimer alloc] initWithFireDate:now&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;interval:0.0&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;target:obj1&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;selector:@selector(createClassB)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;userInfo:nil&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;repeats:NO]; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSRunLoop *runLoop = [NSRunLoop currentRunLoop];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[timer release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[now release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[runLoop run]; //&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在新&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中调用一函数，&lt;a name="OLE_LINK4"&gt;&lt;/a&gt;&lt;a name="OLE_LINK3"&gt;&lt;span style="mso-bookmark: OLE_LINK4"&gt;生成&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="mso-bookmark: OLE_LINK3"&gt;&lt;span style="mso-bookmark: OLE_LINK4"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: OLE_LINK3"&gt;&lt;span style="mso-bookmark: OLE_LINK4"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: OLE_LINK3"&gt;&lt;span style="mso-bookmark: OLE_LINK4"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;实例&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"releasing autorelasePool\n"); &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[pool release]; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"autorelasePool is released\n"); &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return 0;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;输出如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;create an autorelasePool&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;create an instance of ClassA and autorelease&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;create an instance of ClassB and autorelease&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB destroyed&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;releasing autorelasePool&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA destroyed&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelasePool is released&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;注意在我们销毁&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;之前，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;实例就已经被销毁了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;有人可能会说，这并不能说明新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;run loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;自动生成了一个新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，说不定还只是用了老的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，只不过后来&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;drain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;了一次而已。我们可以在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;main&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;函数中不生成&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。精简的示例代码如下，详细代码请见附件中的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;memman-run-loop-without-pool.m&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;int main(int argc, char**argv)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"No autorelasePool created\n");&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"create an instance of ClassA\n");&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassA *obj1 = [[ClassA alloc] init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSDate *now = [[NSDate alloc] init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSTimer *timer = [[NSTimer alloc] initWithFireDate:now&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;interval:0.0&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;target:obj1&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;selector:@selector(createClassB)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;userInfo:nil&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;repeats:NO]; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSRunLoop *runLoop = [NSRunLoop currentRunLoop];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[timer release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[now release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[runLoop run]; //&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在新&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中调用一函数，生成&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;实例&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NSLog(@"Manually release the instance of ClassA\n");&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[obj1 release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return 0;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;输出如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;No autorelasePool created&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;create an instance of ClassA&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;create an instance of ClassB and autorelease&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB destroyed&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Manually release the instance of ClassA&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA destroyed&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;我们可以看出来，我们并没有创建任何&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，可是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的实例依然被自动销毁了，这说明新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;run loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;自动创建了一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，这个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;pool&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;run loop&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;结束的时候会销毁自己（并自动&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;所包含的对象）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;补充说明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在研究&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain count&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的时候，我不建议用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;NSString&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。因为在下面的语句中，&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;NSString *str1 = @&amp;#8221;constant string&amp;#8221;;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;str1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain count&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;是个很大的数字。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Objective-C&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;对常量字符串做了特殊处理。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;当然，如果你这样创建&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;NSString&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，得到的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain count&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;依然为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;NSString *str2 = [NSString stringWithFormat:@&amp;#8221;123&amp;#8221;];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;示例代码文件链接：&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;&lt;a href="http://files.cnblogs.com/VinceYuan/objective-c-memman.zip" target="_blank"&gt;&lt;font face="Times New Roman"&gt;http://files.cnblogs.com/VinceYuan/objective-c-memman.zip&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/VinceYuan/aggbug/1681062.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1681062.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680494.html</id><title type="text">iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现</title><summary type="text">objective-C内存管理机制的研究。@property (retain)和@synthesize的默认实现</summary><published>2010-03-07T16:37:00Z</published><updated>2010-03-07T16:37:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680494.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680494.html"/><content type="html">&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;版权声明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;此文版权归作者&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Vince Yuan (vince.yuan#gmail.com)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;所有。欢迎非营利性转载，转载时必须包含原始链接&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://vinceyuan.cnblogs.com/" target="_blank"&gt;&lt;font face="Calibri"&gt;http://vinceyuan.cnblogs.com&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，且必须包含此版权声明的完整内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;版本&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt; 1.1&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;发表于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;2010-03-08&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;三&lt;/span&gt;&lt;font face="Calibri"&gt; &lt;span lang="EN-US"&gt;@property (retain)&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@synthesize&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的默认实现&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 0.2pt; mso-para-margin-left: .02gd"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在这里解释一下&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@property (retain) ClassB* objB;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@synthesize objB;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;背后到底发生了什么&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;(retain property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的默认实现&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;实际上是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;getter&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;setter&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，针对有&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;参数的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，背后的实现如下（请参考附件中的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;memman-getter-setter.m&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，你会发现，结果和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;memman-property.m&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;一样）：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@interface ClassA : NSObject&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassB *objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(ClassB *) getObjB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(void) setObjB:(ClassB *) value;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@end&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@implementation ClassA&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(ClassB*) getObjB&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(void) setObjB:(ClassB*) value&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (objB != value)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[objB release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;objB = [value retain];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;setObjB&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中，如果新设定的值和原值不同的话，必须要把原值对象&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;一次，这样才能保证&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain count&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;是正确的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;由于我们在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;class&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;内部&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;了一次（虽然是默认实现的），所以我们要在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;这个成员变量。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(void) dealloc&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[objB release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[super dealloc];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;示例代码文件链接：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://files.cnblogs.com/VinceYuan/objective-c-memman.zip" target="_blank"&gt;&lt;font face="Calibri"&gt;http://files.cnblogs.com/VinceYuan/objective-c-memman.zip&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/VinceYuan/aggbug/1680494.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680494.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html</id><title type="text">iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式</title><summary type="text">objective-C内存管理机制的口诀与范式</summary><published>2010-03-07T16:35:00Z</published><updated>2010-03-07T16:35:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html"/><content type="html">&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;版权声明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;此文版权归作者&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Vince Yuan (vince.yuan#gmail.com)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;所有。欢迎非营利性转载，转载时必须包含原始链接&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://vinceyuan.cnblogs.com/" target="_blank"&gt;&lt;font face="Calibri"&gt;http://vinceyuan.cnblogs.com&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，且必须包含此版权声明的完整内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;版本&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt; 1.1&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;发表于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;2010-03-08&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;二&lt;/span&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;口诀与范式&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;1&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;口诀。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;1.1&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;谁创建，谁释放（类似于&amp;#8220;谁污染，谁治理&amp;#8221;）。如果你通过&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;alloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;copy&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;来创建一个对象，那么你必须调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。换句话说，不是你创建的，就不用你去释放。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;例如，你在一个函数中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;alloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;生成了一个对象，且这个对象只在这个函数中被使用，那么你必须在这个函数中调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。如果你在一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;class&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的某个方法中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;alloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;一个成员对象，且没有调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，那么你需要在这个类的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法中调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;；如果调用了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，那么在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法中什么都不需要做。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;1.2&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;除了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;alloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;new&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;copy&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;之外的方法创建的对象都被声明了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;1.3&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;谁&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，谁&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。只要你调用了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，无论这个对象是如何生成的，你都要调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。有时候你的代码中明明没有&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，可是系统会在默认实现中加入&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。不知道为什么苹果公司的文档没有强调这个非常重要的一点，请参考范式&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;2.7&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和第三章。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;范式。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;范式就是模板，就是依葫芦画瓢。由于不同人有不同的理解和习惯，我总结的范式不一定适合所有人，但我能保证照着这样做不会出问题。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.1&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;创建一个对象。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA *obj1 = [[ClassA alloc] init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.2&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;创建一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的对象。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA *obj1 = [[[ClassA alloc] init] autorelease];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.3&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;Release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;一个对象后，立即把指针清空。（顺便说一句，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;一个空指针是合法的，但不会发生任何事情）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;[obj1 release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;obj1 = nil;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.4&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;指针赋值给另一个指针。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA *obj2 = obj1;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;[obj2 retain];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;//do something&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;[obj2 release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;obj2 = nil;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.5&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在一个函数中创建并返回对象，需要把这个对象设置为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassA *Func1()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;ClassA *obj = [[[ClassA alloc]init]autorelease];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;return obj;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.6&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在子类的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法中调用基类的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(void) dealloc&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;#8230;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[super dealloc];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level2 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;class&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;中创建和使用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level3 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.1&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;声明一个成员变量。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.5pt; mso-para-margin-left: 6.05gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;ClassB *objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level3 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.2&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;声明&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，加上&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;retain&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;参数。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@property (retain) ClassB* objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level3 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.3&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;定义&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;的默认实现请看第三章）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.2pt; mso-para-margin-left: 6.02gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@synthesize objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level3 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.4&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;除了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法以外，始终用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;操作符的方式来调用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.5pt; mso-para-margin-left: 6.05gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;self.objB &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;或者&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;objA.objB&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; mso-char-indent-count: 0; mso-list: l0 level3 lfo1"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.5&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;dealloc&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;方法中&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;这个成员变量。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63.5pt; mso-para-margin-left: 6.05gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;[objB release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;示例代码如下（详细代码请参考附件中的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;memman-property.m&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;，你需要特别留意对象是在何时被销毁的。）：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@interface ClassA : NSObject&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassB* objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@property (retain) ClassB* objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@end&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@implementation ClassA&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@synthesize objB;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;-(void) dealloc&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[objB release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[super dealloc];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;@end&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 70.9pt; text-indent: -1cm; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level3 lfo1" align="left"&gt;&lt;span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.7.6&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;给这个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;赋值时，有手动&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;release&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;autorelease&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;两种方式。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;void funcNoAutorelease()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassB *objB1 = [[ClassB alloc]init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassA *objA = [[ClassA alloc]init];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;objA.objB = objB1;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[objB1 release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[objA release];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;void funcAutorelease()&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassB *objB1 = [[[ClassB alloc]init] autorelease];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ClassA *objA = [[[ClassA alloc]init] autorelease];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; text-align: left; mso-para-margin-left: 6.0gd; mso-layout-grid-align: none" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;objA.objB = objB1;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt 63pt; mso-para-margin-left: 6.0gd"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;示例代码文件链接：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://files.cnblogs.com/VinceYuan/objective-c-memman.zip" target="_blank"&gt;&lt;font face="Calibri"&gt;http://files.cnblogs.com/VinceYuan/objective-c-memman.zip&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/VinceYuan/aggbug/1680492.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680488.html</id><title type="text">iPhone/Mac Objective-C内存管理教程和原理剖析(一)基本原理</title><summary type="text">初学objectice-C的朋友都有一个困惑，总觉得对objective-C的内存管理机制琢磨不透，程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验，写了这么一个由浅入深的教程。希望对大家有所帮助，也欢迎大家一起探讨。</summary><published>2010-03-07T16:30:00Z</published><updated>2010-03-07T16:30:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680488.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680488.html"/><content type="html">&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;版权声明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;此文版权归作者&lt;/span&gt;Vince Yuan (vince.yuan#gmail.com)&lt;span style="font-family: 宋体"&gt;所有。欢迎非营利性转载，转载时必须包含原始链接&lt;/span&gt;&lt;a href="http://vinceyuan.cnblogs.com/" target="_blank"&gt;http://vinceyuan.cnblogs.com/&lt;/a&gt;&lt;span style="font-family: 宋体"&gt;，且必须包含此版权声明的完整内容。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt; text-align: left" align="left"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;版本&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt; 1.1&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;发表于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;2010-03-08&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;前言&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;初学&lt;/span&gt;objectice-C&lt;span style="font-family: 宋体"&gt;的朋友都有一个困惑，总觉得对&lt;/span&gt;objective-C&lt;span style="font-family: 宋体"&gt;的内存管理机制琢磨不透，程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对&lt;/span&gt;objective-C&lt;span style="font-family: 宋体"&gt;内存管理机制的研究成果和经验，写了这么一个由浅入深的教程。希望对大家有所帮助，也欢迎大家一起探讨。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 宋体"&gt;此文涉及的内存管理是针对于继承于&lt;/span&gt;NSObject&lt;span style="font-family: 宋体"&gt;的&lt;/span&gt;Class&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;一&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;基本原理&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Objective-C&lt;span style="font-family: 宋体"&gt;的内存管理机制与&lt;/span&gt;.Net/Java&lt;span style="font-family: 宋体"&gt;那种全自动的垃圾回收机制是不同的，它本质上还是&lt;/span&gt;C&lt;span style="font-family: 宋体"&gt;语言中的手动管理方式，只不过稍微加了一些自动方法。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;1&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;的对象生成于堆之上，生成之后，需要一个指针来指向它。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj1 = [[ClassA alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;2&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;的对象在使用完成之后不会自动销毁，需要执行&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;来释放空间（销毁），否则内存泄露。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 dealloc]; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;这带来了一个问题。下面代码中&lt;/span&gt;obj2&lt;span style="font-family: 宋体"&gt;是否需要调用&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj1 = [[ClassA alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj2 = obj1;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 dealloc];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj2 hello]; //&lt;span style="font-family: 宋体"&gt;能够执行这一行和下一行吗？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj2 dealloc]; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;不能，因为&lt;/span&gt;obj1&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;obj2&lt;span style="font-family: 宋体"&gt;只是指针，它们指向同一个对象，&lt;/span&gt;[obj1 dealloc]&lt;span style="font-family: 宋体"&gt;已经销毁这个对象了，不能再调用&lt;/span&gt;[obj2 hello]&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;[obj2 dealloc]&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;obj2&lt;span style="font-family: 宋体"&gt;实际上是个无效指针。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如何避免无效指针？请看下一条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;3&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;采用了引用计数&lt;/span&gt;(ref count&lt;span style="font-family: 宋体"&gt;或者&lt;/span&gt;retain count)&lt;span style="font-family: 宋体"&gt;。对象的内部保存一个数字，表示被引用的次数。例如，某个对象被两个指针所指向（引用）那么它的&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;。需要销毁对象的时候，不直接调用&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;，而是调用&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;会让&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;减&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;，只有&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;等于&lt;/span&gt;0&lt;span style="font-family: 宋体"&gt;，系统才会调用&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;真正销毁这个对象。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj1 = [[ClassA alloc] init]; //&lt;span style="font-family: 宋体"&gt;对象生成时，&lt;/span&gt;retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 release]; //release&lt;span style="font-family: 宋体"&gt;使&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;减&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;retain count = 0&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;自动被调用&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;对象被销毁&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;我们回头看看刚刚那个无效指针的问题，把&lt;/span&gt;dealloc&lt;span style="font-family: 宋体"&gt;改成&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;解决了吗？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj1 = [[ClassA alloc] init]; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj2 = obj1; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj1 release]; //retain count = 0&lt;span style="font-family: 宋体"&gt;，对象被销毁&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj2 hello];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;[obj2 release]; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [obj1 release]&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;之后，&lt;/span&gt;obj2&lt;span style="font-family: 宋体"&gt;依然是个无效指针。问题依然没有解决。解决方法见下一条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;4&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;指针赋值时，&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;不会自动增加，需要手动&lt;/span&gt;retain&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;ClassA *obj1 = [[ClassA alloc] init]; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;ClassA *obj2 = obj1; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;&lt;span style="color: red"&gt;[obj2 retain]; //retain count = 2&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj1 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj1 release]; //retain count = 2 &amp;#8211; 1 = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj2 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj2 release]; //retain count = 0&lt;span style="font-family: 宋体"&gt;，对象被销毁&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;&lt;span style="font-family: 宋体"&gt;问题解决！注意，如果没有调用&lt;/span&gt;[obj2 release]&lt;span style="font-family: 宋体"&gt;，这个对象的&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;始终为&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;，不会被销毁，内存泄露。&lt;/span&gt;(1-4&lt;span style="font-family: 宋体"&gt;可以参考附件中的示例程序&lt;/span&gt;memman-no-pool.m)&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;&lt;span style="font-family: 宋体"&gt;这样的确不会内存泄露，但似乎有点麻烦，有没有简单点的方法？见下一条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;5&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;中引入了&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;（自动释放对象池），在遵守一些规则的情况下，可以自动释放对象。（&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;依然不是&lt;/span&gt;.Net/Java&lt;span style="font-family: 宋体"&gt;那种全自动的垃圾回收机制）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;5.1&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;新生成的对象，只要调用&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;就行了，无需再调用&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;ClassA *obj1 = [[[ClassA alloc] init] autorelease]; //retain count = 1 &lt;span style="font-family: 宋体"&gt;但无需调用&lt;/span&gt;release&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;5.2&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;对于存在指针赋值的情况，代码与前面类似。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;ClassA *obj1 = [[[ClassA alloc] init] autorelease]; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;ClassA *obj2 = obj1; //retain count = 1&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;&lt;span style="color: red"&gt;[obj2 retain]; //retain count = 2&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj1 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;//&lt;span style="font-family: 宋体"&gt;对于&lt;/span&gt;obj1&lt;span style="font-family: 宋体"&gt;，无需调用（实际上不能调用）&lt;/span&gt;release&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj2 hello]; //&lt;span style="font-family: 宋体"&gt;输出&lt;/span&gt;hello&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 42pt"&gt;[obj2 release]; //retain count = 2-1 = 1&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;细心的读者肯定能发现这个对象没有被销毁，何时销毁呢？谁去销毁它？（可以参考附件中的示例程序&lt;/span&gt;memman-with-pool.m&lt;span style="font-family: 宋体"&gt;）请看下一条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;6&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;原理剖析。（其实很简单的，一定要坚持看下去，否则还是不能理解&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;的内存管理机制。）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;6.1&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;不是天生的，需要手动创立。只不过在新建一个&lt;/span&gt;iphone&lt;span style="font-family: 宋体"&gt;项目时，&lt;/span&gt;xcode&lt;span style="font-family: 宋体"&gt;会自动帮你写好。&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;的真名是&lt;/span&gt;NSAutoreleasePool&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;6.2&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;NSAutoreleasePool&lt;span style="font-family: 宋体"&gt;内部包含一个数组（&lt;/span&gt;NSMutableArray&lt;span style="font-family: 宋体"&gt;），用来保存声明为&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;的所有对象。如果一个对象声明为&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;，系统所做的工作就是把这个对象加入到这个数组中去。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;ClassA *obj1 = [[[ClassA alloc] init] autorelease]; //retain count = 1&lt;span style="font-family: 宋体"&gt;，把此对象加入&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;中&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;6.3&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;NSAutoreleasePool&lt;span style="font-family: 宋体"&gt;自身在销毁的时候，会遍历一遍这个数组，&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;数组中的每个成员。如果此时数组中成员的&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;，那么&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;之后，&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt;0&lt;span style="font-family: 宋体"&gt;，对象正式被销毁。如果此时数组中成员的&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;大于&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;，那么&lt;/span&gt;release&lt;span style="font-family: 宋体"&gt;之后，&lt;/span&gt;retain count&lt;span style="font-family: 宋体"&gt;大于&lt;/span&gt;0&lt;span style="font-family: 宋体"&gt;，此对象依然没有被销毁，内存泄露。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt; text-indent: -1cm"&gt;&lt;span&gt;6.4&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;默认只有一个&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;，通常类似于下面这个例子。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;int main (int argc, const char *argv[])&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;{&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt; text-indent: 10.5pt"&gt;NSAutoreleasePool *pool;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt; text-indent: 10.5pt"&gt;pool = [[NSAutoreleasePool alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt; text-indent: 10.5pt"&gt;// do something&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt; text-indent: 10.5pt"&gt;[pool release];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt; text-indent: 10.5pt"&gt;return (0);&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;} // main&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;&lt;span style="font-family: 宋体"&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;所有标记为&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;autorelease&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;的对象都只有在这个&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;pool&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;销毁时才被销毁&lt;/span&gt;。如果你有大量的对象标记为&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;，这显然不能很好的利用内存，在&lt;/span&gt;iphone&lt;span style="font-family: 宋体"&gt;这种内存受限的程序中是很容易造成内存不足的。例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;int main (int argc, const char *argv[])&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;{&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;int i, j;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;for (i = 0; i &amp;lt; 100; i++ )&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;{&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;for (j = 0; j &amp;lt; 100000; j++ )&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NSString stringWithFormat:@"1234567890"];//&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;产生的对象是&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;}&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;[pool release];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;return (0);&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;} // main&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.7pt"&gt;&lt;span style="font-family: 宋体"&gt;（可以参考附件中的示例程序&lt;/span&gt;memman-many-objs-one-pool.m&lt;span style="font-family: 宋体"&gt;，运行时通过监控工具可以发现使用的内存在急剧增加，直到&lt;/span&gt;pool&lt;span style="font-family: 宋体"&gt;销毁时才被释放）你需要考虑下一条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 49.6pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21.25pt; text-indent: -21.25pt"&gt;&lt;span&gt;7&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Objective-C&lt;span style="font-family: 宋体"&gt;程序中可以嵌套创建多个&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;。在需要大量创建局部变量的时候，可以创建内嵌的&lt;/span&gt;autorelease pool&lt;span style="font-family: 宋体"&gt;来及时释放内存。&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;（感谢网友&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;hhyytt&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;和&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;neogui&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;的提醒，某些情况下，系统会自动创建&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;autorelease pool, &lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;请参见第四章）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;int main (int argc, const char *argv[])&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;{&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;int i, j;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;for (i = 0; i &amp;lt; 100; i++ )&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;{&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;for (j = 0; j &amp;lt; 100000; j++ )&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NSString stringWithFormat:@"1234567890"];//&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;产生的对象是&lt;/span&gt;autorelease&lt;span style="font-family: 宋体"&gt;的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;[loopPool release];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;}&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;[pool release];&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 63pt"&gt;return (0);&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;} // main&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 52.5pt"&gt;&lt;span style="font-family: 宋体"&gt;（可以参考附件中的示例程序&lt;/span&gt;memman-many-objs-many-pools.m&lt;span style="font-family: 宋体"&gt;，占用内存的变化极小）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p  style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;示例代码文件链接：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://files.cnblogs.com/VinceYuan/objective-c-memman.zip" target="_blank"&gt;&lt;font face="Calibri"&gt;http://files.cnblogs.com/VinceYuan/objective-c-memman.zip&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/VinceYuan/aggbug/1680488.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680488.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2010/02/03/1662687.html</id><title type="text">一个用快捷键隐藏或显示任务栏的小程序</title><summary type="text">帮朋友做了一个小程序：启动时最小化至托盘区，显示为一个Windows图标。双击图标可以显示或隐藏主界面。右键弹出菜单。可以用快捷键(Ctrl+Q)隐藏或显示Windows任务栏。由于vista下的任务栏分为圆形的start按钮和普通任务栏，所以要特殊处理。Free &amp;amp; Open Source。程序：TaskbarHide.zip代码：TaskBarHideSrc.zip(C#)本程序基于S...</summary><published>2010-02-03T07:22:00Z</published><updated>2010-02-03T07:22:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2010/02/03/1662687.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2010/02/03/1662687.html"/></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2007/03/23/685456.html</id><title type="text">C/C++中一些要注意的地方</title><summary type="text">列一些我个人要注意的一些C/C++技术要点。</summary><published>2007-03-23T08:34:00Z</published><updated>2007-03-23T08:34:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2007/03/23/685456.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2007/03/23/685456.html"/></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2007/01/12/618568.html</id><title type="text">一个关于数字和字符串格式化的示例</title><summary type="text">看到有人问一个数字和字符串格式化的问题，我把我的解答贴过来</summary><published>2007-01-12T03:43:00Z</published><updated>2007-01-12T03:43:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2007/01/12/618568.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2007/01/12/618568.html"/></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2006/08/22/483326.html</id><title type="text">Oracle OLEDB不支持sys以sysdba方式登陆</title><summary type="text">本文探讨了sys以sysdba方式登陆的方法，可以使用ODBC，但不是能使用OLE DB。</summary><published>2006-08-22T06:27:00Z</published><updated>2006-08-22T06:27:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2006/08/22/483326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2006/08/22/483326.html"/></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2006/06/04/417200.html</id><title type="text">我的免费数独小游戏更新了 v1.1</title><summary type="text">我的免费数独小游戏(VinceSudoku)更新了, 目前的版本是v1.1。增加了下面计时、提示、检查这三个重要功能。</summary><published>2006-06-04T13:26:00Z</published><updated>2006-06-04T13:26:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2006/06/04/417200.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2006/06/04/417200.html"/></entry><entry><id>http://www.cnblogs.com/VinceYuan/archive/2006/05/30/413170.html</id><title type="text">试用Zoundry</title><summary type="text">Zoundry是一个流行的离线blog书写和发布工具。本文介绍了此软件的优点和连接MSN的特殊之处。</summary><published>2006-05-30T08:41:00Z</published><updated>2006-05-30T08:41:00Z</updated><author><name>Vince Yuan</name><uri>http://www.cnblogs.com/VinceYuan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/VinceYuan/archive/2006/05/30/413170.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/VinceYuan/archive/2006/05/30/413170.html"/></entry></feed>
