开始iphone开发<Objective-c 第八章>

开始iphone开发<Objective-c 第八章>,第1张

概述来北京一个星期了,去西藏流浪的计划也未能去实施,那就明年吧,先好好干一年,晃悠太久了,该花一段时间去认真做点事情了。西藏。。明年再去吧。 来北京做iphone开发,大学的时候励志要当程序员,结果大学从做完电赛就一直玩,玩了两三年,几乎荒废了,本来不准备写程序了,各种机缘巧合又开始了代码生涯,人生就是一段修行,既然来了,就好好修行。 iphone开发了解了一下,需要学习Objective-c和xco

来北京一个星期了,去西藏流浪的计划也未能去实施,那就明年吧,先好好干一年,晃悠太久了,该花一段时间去认真做点事情了。西藏。。明年再去吧。

来北京做iphone开发,大学的时候励志要当程序员,结果大学从做完电赛就一直玩,玩了两三年,几乎荒废了,本来不准备写程序了,各种机缘巧合又开始了代码生涯,人生就是一段修行,既然来了,就好好修行。

iphone开发了解了一下,需要学习Objective-c和xcode,Cocoa类什么的,这几天一直在看Objective-c,以前一直做过程控制,对面向对象还是没有什么了解,要逐步培养自己面向对象思维。下面是自己的读书笔记,写下来,方便以后查阅。前几章写在本子上了。

现在在看《Objective-c 基础教程》


第八章

1。Cocoa Foundation框架中有很多有用的、面向数据的低级类和数据类型

2。Foundation框架拥有100多个类,这些文档存放在/Developer/ADC Reference library/documentation/index.HTML


3。test:


 NSautoreleasePool *pool  = [[NSautoreleasePool alloc] init];...[pool drain];

//这是Cocoa内存管理,开始创建(通过alloc)并初始化(通过init)了一个NSautoreleasePool实例,在结尾,池被排空。


4。NSMakeRange(); 快捷方式赋值,for example: NSRange range = NSMakeRange(17,4);


5.几个几何数据类型

typedef struct _NSPoint{float x;float y;}NSPoint;//代表的是笛卡尔平面一个点(x,y)typedef struct _NSSize{float wIDth;float height;}NSSize; //NSSize用来存储长度和宽度typedef struct _NSRect{NSPoint orign;NSSize   size;}NSRect; //矩形数据类型;//Cocoa 也为我们提供了创建数据类型的快捷函数 :NSMakePoint(),NSMakeSize()和NSMakeRect();


6.Cocoa中用来处理字符串的类:Nsstring


7.Nsstring 的stringWithFormat :通过格式字符串和参数来创建Nsstring

+ (ID) stringWithFormat: (Nsstring *) format,…  ;

//后面的 ",…"表示可以接收多个以逗号隔开的参数,前面的 +号表示的概念:

一个类的方法有两种,一种是类方法,一种是实例方法。

类方法有点像静态方法,它属于一个类,二不是属于一个类的实例,定义时前面用“+”号

而实例方法就是属于一个类的实例的方法,定义时前面用“-”号

for example:

+ (ID)allobjective-c;//这是一个类方法-(voID)dosomething;//这是一个实例方法

//在Objective-c里面没有 public和private的概念,可以认为全是 public,用加号的意思就是其它函数可以直接调用那个这个类中的这个函数,而不用创建这个类的实例。


//about ID: Objective-c有一种特殊的数据类型是ID,在O-c里,一切东西都是指针形式保存,获取到的就是这个对象在内存的位置。那么ID就是你知道这个位置,但是不知道里面是啥的时候的写法。


创建新的字符串:

 

Nsstring *height;height * [Nsstring  stringWithFormat:	@"You height is %d feet. %d inches",5,11];


8.  -(unsigned int ) length;  属于Nsstring,返回的是字符串中的字符个数。

使用方法: unsigned int length = [height length];

注:length方法能够准确的处理国际字符串。

9.字符串比较: isEqualToString,声明:

- (BOol) isEqualToString: (Nsstring *) aString; //放回一个BOol类型


10。isEqualToString 和compare的区别??


11. compare:options:  不区分大小写比较

- (BOol) isEqualToString: (Nsstring *) aString; //放回一个BOol类型

12。判断字符串是否孩包含别的字符串


-(BOol) hasPrefix:(Nsstring *)aString;-(BOol) hasSuffix: (Nsstring *) aString;


13.Nsstring是不能改变的,可以改变它的子类 NSMutableString,可以改变这个子类


14。COCOa提供了许多集合类,如:NSArray 和NSDictionary,(他们的实例就是为了存储其它对象而存在的)。

//NSArray :用来存放对象的数组,(类似c中的数组概念,只是这个数组是存放的对象)

NSArray有两个限制:

<1>只能存储Objective-c对象,不能存放C语言的基本数据(如int,float).

<2>不能在NSArray中存储nil(对象的零值或NulL值),因为数组的最后一个值就是nil。


//可以通过类方法arrayWithObjects:创建一个新的NSArray

for example:

//--------->NSArray *array;array = [NSArray arrayWithObjects: @"one",@"two",@"three",nil];//---------<创建了一个由3个对象元素组成的数组Nsstring


- (unsigned) count; //获得NSArray所包含的对象- (ID) objectAtIndex: (unsigned int) index; //获取特定索引处的对象,调用方法 [array  objectAtIndex:  index]


for example:

//------>int i;for (i =0; i< [array count]; i++){NSLog (@"index %d has %@,",i,[array objectAtindex:i ] );} //输出NSArray 数组的个数和内容//------<


15. 在Cocoa中,看到字符“CF",就是与CoreFoundation框架相关的内容。CoreFoundation框架与Cocoa一样,但是是用c写的,内容开源。


16。NSSrting是不可变对象的数组,NSMutableArray  是可变对象的数组,可以对元素进行添加和删除。

创建方法:

+ (ID) arrayWithCapacity: (unsigned) numitems; //NSMutableArray通过类方法arrayWithCapacity来创建新的可变数组

for example:

//----------->NSMutableArray *array;array = [NSMutableArray  arrayWithCapacity: 17];//-------------<注意创建Nsstring是用的arrayWithObjects,创建NSMUtalbeArray是用的arrayWithCapacity


在数组末尾添加对象的方法:

- (voID) addobject: (ID) anObject;for example: [array addobject: tire];


删除对象:

- (voID) removeObjectAtIndex: (unsigned) index;for example: [array removeObjectAtIndex: 1];


17.NSEnumerator 对NSArray进行查找 *** 作(书上写的枚举,开始一直没搞明白),C数组查找元素,只用指针+number就可以了,但是NSArray不行,遍历NSArray必须借助于枚举器 NSEnumerator


向数组请求枚举器"

-(NSEnumerator *) objectEnumerator;


//for example;

NSEumerator *enumerator;enumerator = [array objectEnumerator]


获得枚举器之后,开始while循环,每次循环向枚举器请求nextObject

-(ID) nextObject;

nextObject返回nil值时,循环结束


//for example

NSEnumerator *enumerator;enumerator = [array objectEnumerator];ID thingIE;while(thingIE = [enumerator nextObject]){NSLog(@"i found %@,thingIE);} //遍历数组的实例


//疑问,书上说“对可变数组进行枚举 *** 作,不能通过添加或删除对象这类方式来改变数组容器”这句话不太明白,可以边遍历边修改内容吗?或者说是对可变数组NSMutableArray 不能边遍历边修改?


18。快速枚举,仅在Object-c 2.0版本


//

for(Nsstring *string in array){NSLog(@" I found %@",string);} //这个循环体将会遍历数组中的每个元素,并且用变量string存储每个数组值。


19。遍历数组NSArray的三种方法:

<1>.索引 @H_419_350@// [array objectAtIndex:i] ,(  -(unsigned)  objectAtIndex: (unsigned int ) index;

<2>.使用NSEnumerator

<3>,快速枚举



19.NSDictionary

字典:关键字和定义的集合。//字典也被称为散列表或关联数组,和Nsstring,NSArray一样是不可变的,NSMutableDictionary类允许随意 添加和删除字典元素


创建字典: @H_419_350@dictionaryWithObjectsAndKeys:

+ (ID) dictionaryWithObjectsAndKeys:

@H_419_350@@H_419_350@@H_419_350@(ID) firstObject,;

//该方法接收对象和关键字交替存储,以nil值作为终止符号。

for example:

//------------------Tire *t1 =[Tire new];Tire *t2 =[Tire new];Tire *t3= [Tire new];Tire *t4= [Tire new];NSDictionary *tires;tires = [NSDictionary dictionaryWithObjectsAndKeys:t1,@"front-left",t2,@"front-right",t3,@"back-left",t4,@"back-right",nil];//---------------------


查找字典中的值可以用: @H_419_350@objectForKey;

- (ID) objectForKey: (ID) aKey;


for example:

//-------------------Tire *tire = [tires objectForKey:@"back-right"];//------------------如果没有找到,则返回nil值


NSMutableDictionary @H_419_350@//可变字典

创建 : @H_419_350@dictionaryWithCapacity

+ (ID) dictionaryWithCapacity: (unsigned int ) numItems;


setobject:forkey: @H_419_350@给字典添加元素

-(voID) setobject:(ID) anObject forKey: (ID) aKey;


//---------------->另外一种存储轮胎字典的方法NSMutableDictionary *tires;tires = [NSMutableDictionary dictionary];[tires setobject: t1 forKey: @"front-left"];[tires setobject: t2 forKey: @"front-right"];[tires setobject: t3 forKey: @"back-left"];[tires setobject: t4 forKey: @"back-right"];//------------------<如果对字典已有的关键字是用setobject:forKey: 则替代


删除可变字典关键字: @H_419_350@removeObjectForKey:方法

-  (voID) removeObjectForKey: (ID) aKey:for example://-------------------[tires removeObjectForKey:  @"back-left"];



20.    类簇概念,如NSliterlString .NSCFString,NSSimpleCString,NSBa110fString形成一个与Nsstring相关的类簇,创建Nsstring对象时,可能获得上面几个相关的对象。给类簇创建子类是困难的,所以不要试图创建Nsstring.NSArray.NSDictionary的子类


21。NSNuber @H_419_350@//用来包装基本数据类(即把基本数据类型以对象形式实现)


//四个常用的创建方法

+ (NSNumber *) numberWithChar: (char) value;+ (NSNumber *) numberWithInt: (int) value;+ (NSNumber *) numberWithfloat: (float) value;+ (NSNumber *) numberWithBool: (BOol) value;


for example:

//---------------->NSNumber *number;number = [NSNumber numberWithInt:42];[array addobject: number];[dictionary setobject: number forKey: @"Bork"];


//把数据封装到NSNumber中后,可以通过下面的实例方法重新获得:

- (char) charValue;- (int) intValue;- (float) floatValue;-(BOol) boolValue;- (Nsstring *) stringValue;


注:Objective-c语言不支持自动装箱


22.标签的概念:

标签是用于判断对应参数用途的一个标记@H_419_350@,名字可以随便取,多参数时,除第一个参数以外,别的参数都要写标签,如:

(voID) func2: (int) n  labe1:(int) m  labe2:(int)  p{}

或者写成:

(voID) func2: (int) nlabe1: (int) mlabe2:(int) p{}


23.NSValue @H_419_350@@H_419_350@//NSNumber 是NSValue的一个子类


24. NSNull

+ (NSNull *) null;


添加方法:

[ contact setobject: [NSNull null] forKey:@"home fax machine"];


访问方法:

ID homefax:home fax = [ contact objectForKey: @"home fax machine"];if (home fax == [NSNull null){//..no fax machine}
总结

以上是内存溢出为你收集整理的开始iphone开发<Objective-c 第八章>全部内容,希望文章能够帮你解决开始iphone开发<Objective-c 第八章>所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1061910.html

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

发表评论

登录后才能评论

评论列表(0条)

保存