retain 和copy的区别
原来简单解释过属性定义(Property) ,并且提起了简单的retain,copy,assign的区别。那究竟是有什么区别呢?
assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们。
Retain vs. Copy!!
copy: 建立一个索引计数为1的对象,然后释放旧对象
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
那上面的是什么该死的意思呢?
Copy其实是建立了一个相同的对象,而retain不是:
比如一个NSString对象,地址为0×1111,内容为@”STR”
Copy到另外一个NSString之后,地址为0×2222,内容相同,新的对象retain为1,旧有对象没有变化
retain到另外一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1
也就是说,retain是指针拷贝,copy是内容拷贝。哇,比想象的简单多了…
在 iPhone上显示LCD效果
我看到一个程序是这样样子的:
哇!好厉害,怎么弄出来的!难道要用Q2D画出来么?
不… …
其实这就是UILabel外加一个奇异的字体 DBLCDTempBlack
And, that’s it! 生活多么美好阿~
不要对 viewController作这样的事情
错误:
UIViewController *aViewController = [[UIViewController alloc] init];
[window addSubview:aViewController.view];
[aViewController release];
这样的话,系统会崩溃的… window或着其他父视图是不会retain整个viewController的,这个时候不能立刻release
正确:
[aViewController.view removeFromSuperview];
[aViewController release];
也就是说,在release之前需要从superview中移除这个viewController的view。如果一直都需要这个view,那就在 dealloc里面作这些事情就可以了
数据类型/ 对象类型介绍(1)NSString
字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中,苹果为我们提供了一个不同的字符串类型 NSString。有别与普通的String为数据类型,NSString其实是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,好的和好的… ….
小常识:
NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT.
@是Cocoa元素的前缀,很多地方我们会看到,比如接下来…
1, 创建一个NSString对象
简单方法:
NSString *aString = @"我是个NS字符串!"; //除了引号外加@, 没别的区别
*上面的不需要操心内存管理哟~
复杂一点儿:(需要内存管理的)
NSString *aString = [[NSString alloc] initWithFormat:@"这也是个NS字符串!"];
*initWithFormat是其中一个初始化方法,常用的还有
//从一个文件读取需要的内容
- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error
//从一个地址读取需要的内容
- (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error
*以上方法得到的NSString的retain值为1,所以记得release掉阿~~
2,使用一个NSString对象
NSString *aString = @"This is a NSString";
NSLog(aString); //在控制台输出信息,该函数方法需要一个NSString对象作为参数
NSLog("这样不会好使的");
NSLog(@"这样就会好使拉~");
再比如设置一个UIView的标题:
[UIView setTitle:aString];
[UIView setTitle:@"标题"];
UIView.title = aString;
3,释放NSString
[aString release]; //对象将被系统释放掉咯
*记得不要释放直接用 = @”xxx” 的NSString对象哟,系统会管的~
4,快速使用一个NSString
NSLog([NSString stringWithFormat:@"一个NS字符串"]);
//这种快速方法返回的是一个retain为1,autorelease的对象,不需要操心它的内存管理
5,常用方法
我喜欢NSString的地方就在于很多方法非常方便,比如:
nString = [aString substringToIndex:4]; //nString将得到aString中的前四个字符
原文:http://www.iteye.com/topic/674879
分享到:
相关推荐
《iPhone开发笔记》 在iOS应用开发中,掌握基本的iPhone开发技巧至关重要。这篇笔记涵盖了多个方面的内容,从UI设计到交互处理,再到系统状态的响应,为开发者提供了丰富的实践指导。 1. 退回输入键盘:当用户在...
【iPhone开发笔记】这篇笔记主要涉及的是在Windows环境下如何搭建iPhone应用开发的环境,以及使用Xcode进行初步的编程体验,特别是创建一个简单的"Hello World"应用。 首先,要搭建开发平台,你需要在Windows系统中...
在iOS开发中,Core Data是苹果提供的一种强大的数据持久化框架,它简化了数据库操作,使得开发者能够更专注于应用程序的业务逻辑。本文将基于提供的代码片段和描述,深入讲解Core Data的基本概念、实体(Entity)、...
iphone开发笔记.iphone开发笔记.iphone开发笔记.iphone开发笔记.
其次,"iPhone开发笔记实录(代码讲解)"和"iPhone应用程序编程指南-中文版"提供了丰富的实践案例,帮助初学者理解开发流程和API使用。"你的第一个cocos2d游戏实例【代码】"则适合对游戏开发感兴趣的开发者,通过实际...
2. **iPhone开发笔记实录(代码讲解)**: 这部分资料可能包括了实际开发过程中的笔记和代码示例,它们对学习者理解iOS应用开发流程、设计模式、代码结构等方面非常有帮助。 3. **PhoneClube第六期:高效手机程序...
本压缩包中包含了Iphone开发中常用到的技术总结笔记,五六十中技术方法以及季节方案,包括内存管理,方法回调,获取当前地点,自定义CELL,VIew圆角等等等,太多的奶水包,是我开发中所有的精华所在,只有你不知道的...
这些标签表明这些文档是围绕iPhone开发的学习材料,适合开发者作为笔记参考,或者对iPhone开发感兴趣的初学者使用。通过阅读和学习,开发者可以建立起扎实的iPhone应用开发基础,并逐步提升技能水平。 总结来说,这...
例如,“iPhone开发笔记实录”、“object-c入门教程中文版”以及“你的第一个cocos2d游戏实例【代码】”涵盖了从基本编程知识到游戏开发的全过程。其中,Objective-C作为iOS开发历史上的主流语言,通过“Objective-C...
本教程主要聚焦于iPhone开发的基础知识,包括Object-C语言、界面设计和UIViewController的使用。 Object-C是iOS开发的主要编程语言,它基于C语言并添加了Smalltalk的面向对象特性。对于初学者来说,《Learn Object-...
### iPhone开发一年的工作笔记知识点详解 #### 文档概述 该文档是作者从事iOS开发一年以来,针对工作中常用到的200多个iOS知识点进行总结整理的成果。文档中不仅包含了知识点的简要介绍,还提供了可运行的示例代码...
### iPhone开发基础教程知识点概述 #### 一、开发前的准备 - **硬件需求**:首先,需要确保拥有一台运行OS X Leopard (10.5.3或更高版本)的基于Intel的Macintosh计算机。这包括2006年后发布的任何Macintosh计算机,...
本篇笔记将详细介绍`NSLog`的使用和其在iPhone应用开发中的作用。 `NSLog`是Foundation框架的一部分,用于向控制台输出文本信息。它在Objective-C和Cocoa Touch环境中扮演着类似Java中`System.out.println`的角色,...