开始iphone开发<Objective-c 第八章>
来源:互联网 发布:手机淘宝怎么注册账号 编辑:程序博客网 时间:2024/04/29 13:06
来北京一个星期了,去西藏流浪的计划也未能去实施,那就明年吧,先好好干一年,晃悠太久了,该花一段时间去认真做点事情了。西藏。。明年再去吧。
来北京做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>.索引 // [array objectAtIndex:i] ,( -(unsigned) objectAtIndex: (unsigned int ) index;
<2>.使用NSEnumerator
<3>,快速枚举
19.NSDictionary
字典:关键字和定义的集合。//字典也被称为散列表或关联数组,和NSString,NSArray一样是不可变的,NSMutableDictionary类允许随意 添加和删除字典元素
创建字典: dictionaryWithObjectsAndKeys:
+ (id) dictionaryWithObjectsAndKeys:
(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];//---------------------
查找字典中的值可以用: objectForKey;
- (id) objectForKey: (id) aKey;
for example:
//-------------------Tire *tire = [tires objectForKey:@"back-right"];//------------------如果没有找到,则返回nil值
NSMutableDictionary //可变字典
创建 : dictionaryWithCapacity
+ (id) dictionaryWithCapacity: (unsigned int ) numItems;
setObject:forkey: 给字典添加元素
-(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: 则替代
删除可变字典关键字: removeObjectForKey:方法
- (void) removeObjectForKey: (id) aKey:for example://-------------------[tires removeObjectForKey: @"back-left"];
20. 类簇概念,如NSLiterlString .NSCFString,NSSimpleCString,NSBa110fString形成一个与NSString相关的类簇,创建NSString对象时,可能获得上面几个相关的对象。给类簇创建子类是困难的,所以不要试图创建NSString.NSArray.NSDictionary的子类
21。NSNuber //用来包装基本数据类(即把基本数据类型以对象形式实现)
//四个常用的创建方法
+ (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.标签的概念:
标签是用于判断对应参数用途的一个标记,名字可以随便取,多参数时,除第一个参数以外,别的参数都要写标签,如:
(void) func2: (int) n labe1:(int) m labe2:(int) p{}或者写成:
(void) func2: (int) nlabe1: (int) mlabe2:(int) p{}
23.NSValue //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 ---上
- Objective-C 程序设计 第八章
- [iphone开发]Objective-C学习笔记: Objective-C 语言特性
- objective-c二维数组 objective-c多维数组 iPhone 开发
- iPhone开发-Objective-C (转)---上
- iPhone 开发 (七)Objective-C 学习
- iPhone开发之Objective-C类对象
- Objective-C,iphone开发的方法调用
- iphone开发基础之objective-c学习
- objective-c学习笔记第八章《objective-c 一些特性》
- 《Objective-C基础教程》学习笔记第八章
- Objective-C程序设计第八章----继承
- 详解iPhone开发之Objective-C和 C 混编
- Objective-C 语言教程(苹果开发,iPhone开发必备)
- iPhone开发系列文章(三)-Objective-C语言简介
- iPhone开发四剑客之《Objective-C基础教程》
- iPhone开发入门(6)— Action与Objective-C
- hdu1250
- 作品展第二周——痛并快乐着
- jsp常用标签及其属性说明
- 烟台大学大一新生C+第二周实验报告1
- linux底下各种文件格式的解压缩指令/命令
- 开始iphone开发<Objective-c 第八章>
- 对spring AOP 的理解
- avascript原型链解释
- rmi 首试
- Windows下Apache Tomcat的安装
- 如何创建一个九宫格拉伸方式的Sprite
- 第一周实验报告
- 关于ClassPath
- 第二周试验报告2