今天记录一下学习Cocoa里有关里的Foundation框架。
1.首先Cocoa是由两个不同的框架组成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用户接口对象和高级类,Foundation框架中则有很多有用的,面向数据的低级类和数据类型。
2.范围的作用,看看一下结构体:
[plain] view plaincopy typedef struct _NSRange { unsigned int location; unsigned int length; }NSRange;//其中location表示字段存放该范围的起始位置,length表示是该范围内所含元素的个数。
例如:字符串”Objective-C is a cool language“中,单词”cool“可以用loaction为17,length为4的范围来表示。也许由于Locatio字段未被初始化,所以它 的值可以是NSNotFound,用来表示无意义范围。
可以用3种方式创建新的NSRange:
copy (1)直接给字段赋值 NSRange range: range.location = 17; range.length = 4; (2)应用C的聚合结构赋值机制 NSRange range = {17,4}; (3)使用Cocoa提供的一个快捷函数NSMakeRange(); NSRange range = NSMakeRange(17,4);3.几何数据类型:
copy (1) NSPoint和NSSize,首先看看它们的结构体: typedef struct _NSPoint{ float x ; float y; }NSPoint; typedef struct _NSSize{ float wIDth; float height; }NSSIze; (2)矩形类型NSRect typedef struct _NSRect{ NSPoint origin; NSSize size; }NSRect; (3)它们也一样有:创建数据类型的快捷函数,NSMakePoint(),NSMakeSize()和NSMakeRect().4.字符串类型 *** 作:
copy copy (1)创建字符串,除了直接赋值创建Nsstring字符串外,还可以通过:stringWithFormat方法来通过 格式字符串和参数创建Nsstring的 +(ID) stringWithFormat : (Nsstring *)format, .........例子如下:Nsstring *height; height = [Nsstring stringWithFormat : @"Your height is %d feet,%d inches",5,11]; 得到的字符串是“Your height is 5 feet, 11inches”.
这里需要注意的地方有两个,第一就是这个方法后面的省略号,表示这个方法可以接收多个以逗 号隔开的其他参数,第二就是方法声明的开头是一个+号,它代表创建该类的类对象,我们把这 种方法叫做“工厂方法”。 (2)获得字符串大小:length,使用方法如下 unsigned int length = [height length]; 此方法可以准确无误地处理国际字符串。如俄文,中文,日文等。 (3)Nsstring字符串比较 *** 作: 1.-(BOol) isEqualToString: (Nsstring *)aString; 使用如下 Nsstring *thing1 = @“hello 2”; Nsstring *thing2 ; thing2 = [Nsstring stringWithFormat : @"hello %d",5 ]; if ([thing1 isEqualToString : thing2]){ NSLog(@"They are the same!"); }//注意此方法是比较字符串指针向的值,而“==”比较的是指针值。 2.-(NSComparisonResult)compare : (Nsstring *)string; 用法如下,首先先看看NSComparisonResult结构体: typedef enum _NSComparisonResult{ NSOrderedAscending = -1; NSOrderedSame, NSOrderedDEscending }NSComparisonResult; 例子:[@"zoinks" compare : @"jinIEs"]将会返回NSOrderedDescending (表示左侧的字符在右侧字符的后面) 3.-(NSComparisonResult) compare : (Nsstring *)string options : (unsigned)mask; options参数是一个位掩码,你可以使用位或运算符来添加选项标记。例子如下: if( [ thing1 compare : thing2 options : NSCaseInsensitiveSearch | NSNumericSearch ]
== NSOrderedSame) { NSLog (@"They match!") ; } (4)字符串内是否包含别的字符串 1 .-(BOol)hasPrefix:(Nsstring *)aString;//检查字符串是否以另一个字符串开头 -(BOol)hasSuffix:(Nsstring *)aString;//检查字符串是否以另一个字符串结尾 -(NSRange)rangeOfString: (Nsstring *)aString ;//将rangeOfString:发送给一个 Nsstring对象时,传递的参数是要查找的字符串,它会返回一个NSRange struct 来告诉你 与这个字符串相匹配的 部分在哪里以及能够匹配上的字符串个数。 例子:NSRange range; Nsstring *filename = @"draft-chapter.pages"; range = [filename rangeOfString : @"chapter"]; 返回的range.start为6,range.length为7.如果传递的参数在接收字符串中没有找到,那 range.start则等于NSNotFound。
5.可变性,Nsstring是不可变的,这并不意味着你不能 *** 作它们。Cocoa提供了一个Nsstring的子类,叫做NSMutableString(可以改变的字符串)
copy copy (1)-(ID)stringWithCapacity: (unsigned)capacity; //注意这个容量只是给NSMutableString的一个建议。 例子:string = [NSMutableString stringWithCapcity : 42]; (2)有了一个可变的字符串,那就可以对它执行各种 *** 作了: 1.-(voID)appendString : (Nsstring *)aString; 2.-(voID)appendFormat : (Nsstring *)format , ......; 例子:NSMutableString *string; string = [NSMutableString stringWithCapacity: 50]; [ string appendString : @"Hello there"]; [ string appendFormat : @"human %d!",39 ]; 这段代码的运行结果是string被赋值为“Hello there human 39!” 3.-(voID)deleteCharactersInRange : (NSRange) range; 我们经常会把deleteCharactersInRange:和rangeOfString:连在一起使用,例子: NSMuableString *frIEnds; frIEnds = [ NSMutableString stringWithCapacity: 50]; [ frIEnds appendString : @"JAmes BethLynn Jack Evan" ]; 接下来,找到JAck的字符范围: NSRange jackRange; jackRange = [frIEnds rangeOfString: @"Jack"]; jackRange.length++;//这句的意思是,把后面的空格也算上。 [ frIEnds deleteCharactersInRange : jackRange ]; 结果为:“James BethLynn Evan”
好了,今天就写到这里,继续会有更新,转载请注明:http://blog.csdn.net/yuzhiboyi
总结以上是内存溢出为你收集整理的IOS之Objective-C学习笔记(五)全部内容,希望文章能够帮你解决IOS之Objective-C学习笔记(五)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)