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

<channel>
	<title>“我”的开发笔记 &#187; 01 &#8211; 基础信息</title>
	<atom:link href="http://c.gzl.name/archives/category/cocoa/cbasic/feed" rel="self" type="application/rss+xml" />
	<link>http://c.gzl.name</link>
	<description>IPhone, Cocoa, PHP, Javascript, JQuery, Actionscript, etc...</description>
	<lastBuildDate>Thu, 29 Dec 2011 07:20:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>NSString的内存管理 v.2011/12</title>
		<link>http://c.gzl.name/archives/606</link>
		<comments>http://c.gzl.name/archives/606#comments</comments>
		<pubDate>Mon, 05 Dec 2011 08:31:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[03 - 内存管理]]></category>
		<category><![CDATA[NSString]]></category>
		<category><![CDATA[内存管理]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=606</guid>
		<description><![CDATA[之前写过一个NSString的内存管理 不过好像由于之前的理解不深刻，所以写的时候也没有说明太清楚。 CS193P的笔记上有如下实例： aString = @"I am a string that 2 years old, man!"; 这种情况下，字符串储存和管理由系统做，我们不用操心。 aString = [NSString stringWithFormat:@"I am a string that %d years old, man!",2]; 第二种情况下，我们需要去retain和release这个字符串，系统不管。 这是之前写的内容。 为什么第一种我们不管这个产生的NSString的retain值呢？是因为其实由于我们建立了一个常量，无论我们retain还是release，对于这个对象都是没有意义的，大家可以尝试 NSString *foo = @&#34;ssff&#34;; &#91;foo release&#93;; &#91;foo release&#93;; 会发现，这样的代码并不会让程序崩溃，而且无论你再release几次都是一样的。 第二种其实就是利用NSString 方法来生成一个NSString对象，这个时候我们要招呼到这个对象的retain值，否则就是内存溢出了。而我当时说的并不是一定要releaes或者retain这个stringWithFormat便捷方法产生的对象&#8230; 我语文不好，哈哈。便捷方法产生的都是autorelease的对象，谢谢大家的留言！]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/606/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>数据类型/对象类型介绍（1）NSString</title>
		<link>http://c.gzl.name/archives/324</link>
		<comments>http://c.gzl.name/archives/324#comments</comments>
		<pubDate>Thu, 13 Aug 2009 00:49:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[NSString]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=324</guid>
		<description><![CDATA[字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中，苹果为我们提供了一个不同的字符串类型NSString。有别与普通的String为数据类型，NSString其实是一个对象类型。NSString是NSObject（Cocoa Foundation的基础对象）的子类，所以具有NSObject的所有特性，好的和好的&#8230; &#8230;. 小常识： NS是Cocoa类对象类型的前缀，来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT. @是Cocoa元素的前缀，很多地方我们会看到，比如接下来... 1, 创建一个NSString对象 简单方法： NSString *aString = @&#34;我是个NS字符串！&#34;; //除了引号外加@, 没别的区别 *上面的不需要操心内存管理哟～ 复杂一点儿：（需要内存管理的） NSString *aString = &#91;&#91;NSString alloc&#93; initWithFormat:@&#34;这也是个NS字符串！&#34;&#93;; *initWithFormat是其中一个初始化方法，常用的还有 //从一个文件读取需要的内容 - &#40;id&#41;initWithContentsOfFile:&#40;NSString *&#41;path encoding:&#40;NSStringEncoding&#41;enc error:&#40;NSError **&#41;error //从一个地址读取需要的内容 - &#40;id&#41;initWithContentsOfURL:&#40;NSURL *&#41;url encoding:&#40;NSStringEncoding&#41;enc error:&#40;NSError **&#41;error *以上方法得到的NSString的retain值为1，所以记得release掉阿～～ 2，使用一个NSString对象 NSString *aString = @&#34;This is a NSString&#34;; &#160; NSLog&#40;aString&#41;; //在控制台输出信息，该函数方法需要一个NSString对象作为参数 &#160; NSLog&#40;&#34;这样不会好使的&#34;&#41;; &#160; NSLog&#40;@&#34;这样就会好使拉～&#34;&#41;; 再比如设置一个UIView的标题： [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/324/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>64位编程：整数/小数</title>
		<link>http://c.gzl.name/archives/207</link>
		<comments>http://c.gzl.name/archives/207#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:52:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[CGFloat]]></category>
		<category><![CDATA[int]]></category>
		<category><![CDATA[NSInteger]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=207</guid>
		<description><![CDATA[A 对应64位编程的时候， 对于整数应使用NSInteger和NSUInteger，而非int 对于小数应使用CGFloat，而非float NSInteger其实是一个自动定义，在32位中为int，而64位中为long。CGFloat的原理类似]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>属性项目的定义（property）</title>
		<link>http://c.gzl.name/archives/85</link>
		<comments>http://c.gzl.name/archives/85#comments</comments>
		<pubDate>Mon, 15 Jun 2009 23:31:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[03 - 自定义类]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[assign]]></category>
		<category><![CDATA[atomic]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[nonatomic]]></category>
		<category><![CDATA[property]]></category>
		<category><![CDATA[retain]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=85</guid>
		<description><![CDATA[@property &#40;copy, nonatomic&#41; NSString *title; 什么是assign，copy，retain之间的区别？ assign： 简单赋值，不更改索引计数（Reference Counting）。 copy： 建立一个索引计数为1的对象，然后释放旧对象 retain：释放旧的对象，将旧对象的值赋予输入对象，再提高输入对象的索引计数为1 retain的实际语法为： - &#40;void&#41;setName:&#40;NSString *&#41;newName &#123; if &#40;name != newName&#41; &#123; &#91;name release&#93;; name = &#91;newName retain&#93;; // name’s retain count has been bumped up by 1 &#125; &#125; 说了那么麻烦，其实接下来的话最重要： ?如果你不懂怎么使用他们，那么就这样 -&#62; 使用assign: 对基础数据类型 （NSInteger，CGFloat）和C数据类型（int, float, double, char, 等等） 使用copy： 对NSString 使用retain： 对其他NSObject和其子类 nonatomic关键字： [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/85/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>为什么不能直接调用dealloc而是release</title>
		<link>http://c.gzl.name/archives/75</link>
		<comments>http://c.gzl.name/archives/75#comments</comments>
		<pubDate>Mon, 15 Jun 2009 21:33:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[02 - Objective-C]]></category>
		<category><![CDATA[03 - 内存管理]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[dealloc]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=75</guid>
		<description><![CDATA[M 在看过CS193P的笔记后，以下是真正有用的句子： dealloc不等于C中的free，dealloc并不将内存释放，也不会将索引计数（Reference counting）降低。于是直接调用dealloc反而无法释放内存。 在Objective-C中，索引计数是起决定性作用的。]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/75/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对比：id与NSObject</title>
		<link>http://c.gzl.name/archives/70</link>
		<comments>http://c.gzl.name/archives/70#comments</comments>
		<pubDate>Mon, 15 Jun 2009 20:54:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[id]]></category>
		<category><![CDATA[NSObject]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=70</guid>
		<description><![CDATA[N 以下是来自CS193P的笔记： 1，id关键字在编译时不被检查，而NSObject在编译时会被检查是否被调用一些错误方法。 2，id可以是任何对象，包括非NSObject对象 3，定义id的时候不使用*，NSObject却需要。 我的理解，基本上来讲，定义id类似于定义了一个地址（只有指针，抽象指针），而NSObject是确实的定义了一个逻辑对象的地址。 一个来自CS193P笔记的链接： http://unixjunkie.blogspot.com/2008/03/id-vs-nsobject-vs-id.html]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/70/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在子类(sub-class)中覆盖“初始化”和“默认”函数</title>
		<link>http://c.gzl.name/archives/64</link>
		<comments>http://c.gzl.name/archives/64#comments</comments>
		<pubDate>Mon, 15 Jun 2009 00:29:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[01 - 基础信息]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[init]]></category>
		<category><![CDATA[super]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=64</guid>
		<description><![CDATA[I 在CS193P中，Evan强调了以下问题： 为什么要在覆盖init的时候需要检查是否在父类中作初始化，例如： - &#40;id&#41;init &#123; if&#40;self = &#91;super init&#93;&#41; &#123; &#125; &#125; 或 - &#40;id&#41;initWithNibName:&#40;NSString *&#41;nibNameOrNil bundle:&#40;NSBundle *&#41;nibBundleOrNil &#123; if &#40;self = &#91;super initWithNibName:nibNameOrNil bundle:nibBundleOrNil&#93;&#41; &#123; // Custom initialization &#125; return self; &#125; 主要是将本地对象用父类的init进行初始化，其中的等号“=”另一方面检查了是不是成功进行了初始化。CS193P提供了更多关于这个的信息： http://cocoadev.com/index.pl?FactoryMethod -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 不仅仅是init等初始化对象，还有其他一些方法（Method）是需要对自己的父类打声招呼得，例如: - &#40;void&#41;viewDidLoad &#123; &#91;super viewDidLoad&#93;; &#160; &#125; 那这个没有super这句会怎么样呢？没事，一样用。这个是一个delegate，所以需要收听的类应该会收听到的。但是既然缺省的方法就是这么写的，我们也没有必要特意去删除掉这个super方法。]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/64/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

