object c 数据类型对象类型介绍(1)NSString

object c 数据类型对象类型介绍(1)NSString,第1张

概述字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中,苹果为我们提供了一个不同的字符串类型NSString。有别与普通的String为数据类型,NSString其实是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,好的和好的… …. 小常识: NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔

字符串是程序设计最常用的数据类型之一了。在Mac/iPhone编程中,苹果为我们提供了一个不同的字符串类型Nsstring。有别与普通的String为数据类型,Nsstring其实是一个对象类型。Nsstring是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,好的和好的… ….

小常识: NS是Cocoa类对象类型的前缀,来源于史蒂夫-乔布斯被苹果开除那段时间建立的公司NeXT. @是Cocoa元素的前缀,很多地方我们会看到,比如接下来...

1,创建一个Nsstring对象

简单方法:

Nsstring *aString = @"我是个NS字符串!"//除了引号外加@,没别的区别

*上面的不需要 *** 心内存管理哟~

复杂一点儿:(需要内存管理的)

= [[Nsstring alloc] initWithFormat:"这也是个NS字符串!"];

*initWithFormat是其中一个初始化方法,常用的还有

//从一个文件读取需要的内容 - (ID)initWithContentsOffile:(*)path enCoding(nsstringencoding)enc errorNSError **)error //从一个地址读取需要的内容 -)initWithContentsOfURLNSURL )url enCoding)error

*以上方法得到的Nsstring的retain值为1,所以记得release掉阿~~

2,使用一个Nsstring对象

"This is a Nsstring";   NSLog(aString)//在控制台输出信息,该函数方法需要一个Nsstring对象作为参数   NSLog("这样不会好使的");   NSLog"这样就会好使拉~");

再比如设置一个UIVIEw的标题:

[UIVIEw setTitle:aString];   "标题"];   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中的前四个字符

6,小结

暂时能记起来的就这么些了,有机会再补充,希望大家NS的愉快~

标签: NSString
分类目录:  01 - 基础信息,  Cocoa开发,  iPhone开发  |   1 条评论 64位编程:整数/小数 2009年06月24日,7:52 下午

A 对应64位编程的时候,

对于整数应使用NSInteger和NSUInteger,而非int

对于小数应使用CGfloat,而非float

NSInteger其实是一个自动定义,在32位中为int,而64位中为long。CGfloat的原理类似

标签: 64bit,  CGFloat,  int,  NSInteger
分类目录:  title="查看 01 - 基础信息 的全部文章" rel="nofollow" href="JavaScript:voID()" data="/link?url=http://c.gzl.name/archives/category/iphone/basic" 查看 01 - 基础信息 的全部文章" rel="nofollow" href="JavaScript:voID()" data="/link?url=http://c.gzl.name/archives/category/cocoa/cbasic" 查看 Cocoa开发 的全部文章" rel="nofollow" href="JavaScript:voID()" data="/link?url=http://c.gzl.name/archives/category/cocoa" objc" >@property (copy,nonatomic) *Title;

什么是assign,copy,retain之间的区别?

assign: 简单赋值,不更改索引计数(Reference Counting)。 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

retain的实际语法为:

voID)setname)newname { if (name != newname) { [name release]; name [newname retain]// name’s retain count has been bumped up by 1 } }

说了那么麻烦,其实接下来的话最重要:

?如果你不懂怎么使用他们,那么就这样 ->

使用assign: 对基础数据类型 (NSInteger,CGfloat)和C数据类型(int,float,double,char,等等) 使用copy: 对Nsstring 使用retain: 对其他NSObject和其子类

nonatomic关键字:

atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

标签: assign,  atomic,  copy,  nonatomic,  property,  retain
分类目录:  03 - 自定义类,136)">iPhone开发  |   1 条评论 为什么不能直接调用dealloc而是release 2009年06月15日,4:33 下午

M 在看过cs193p的笔记后,以下是真正有用的句子:

dealloc不等于C中的free,dealloc并不将内存释放,也不会将索引计数(Reference counting)降低。于是直接调用dealloc反而无法释放内存。

在Objective-C中,索引计数是起决定性作用的。

标签: dealloc,  release
分类目录:  02 - Objective-C,  03 - 内存管理,iPhone开发  |   评论 对比:id与NSObject 2009年06月15日,3:54 下午

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

标签: id,  NSObject
分类目录:  iPhone开发  |   评论 在子类(sub-class)中覆盖“初始化”和“默认”函数 2009年06月14日,7:29 下午

I 在cs193p中,Evan强调了以下问题:

为什么要在覆盖init的时候需要检查是否在父类中作初始化,例如:

)init if(self [super init}

)initWithNibname)nibnameOrNil bundleNSBundle )nibBundleOrNil =[super initWithNibname:nibnameOrNil bundle:nibBundleOrNil{ // Custom initialization } returnself; 主要是将本地对象用父类的init进行初始化,其中的等号“=”另一方面检查了是不是成功进行了初始化。cs193p提供了更多关于这个的信息:

http://cocoadev.com/index.pl?FactoryMethod

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

不仅仅是init等初始化对象,还有其他一些方法(Method)是需要对自己的父类打声招呼得,例如:

)vIEwDIDLoad [super vIEwDIDLoad那这个没有super这句会怎么样呢?没事,一样用。这个是一个delegate,所以需要收听的类应该会收听到的。但是既然缺省的方法就是这么写的,我们也没有必要特意去删除掉这个super方法。

总结

以上是内存溢出为你收集整理的object c 数据类型/对象类型介绍(1)NSString全部内容,希望文章能够帮你解决object c 数据类型/对象类型介绍(1)NSString所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1065611.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存