专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 移动开发

IOS之Objective-C学习札记(五)

发布时间:2010-05-30 05:31:21 文章来源:www.iduyao.cn 采编人员:星星草
IOS之Objective-C学习笔记(五)

   今天记录一下学习Cocoa里有关里的Foundation框架。

1.首先Cocoa是由两个不同的框架组成的:Foundation Kit和Application Kit,而Application Kit包含了所有的用户接口对象和高级类,Foundation框架中则有很多有用的,面向数据的低级类和数据类型。

2.范围的作用,看看一下结构体:        

[plain] view plaincopy
  1.           typedef struct _NSRange {  
  2.                   unsigned int location;  
  3.                   unsigned int length;   
  4.           }NSRange;//其中location表示字段存放该范围的起始位置,length表示是该范围内所含元素的个数。  

           例如:字符串”Objective-C is a cool language“中,单词”cool“可以用loaction为17,length为4的范围来表示。也许由于Locatio字段未被初始化,所以它 的值可以是NSNotFound,用来表示无意义范围。

           可以用3种方式创建新的NSRange:

[plain] view plaincopy
  1.           (1)直接给字段赋值  
  2.                 NSRange range:  
  3.                 range.location = 17;  
  4.                 range.length = 4;  
  5.           (2)应用C的聚合结构赋值机制  
  6.                NSRange range = {17,4};  
  7.           (3)使用Cocoa提供的一个快捷函数NSMakeRange();  
  8.                NSRange range = NSMakeRange(17,4);  


3.几何数据类型:

[plain] view plaincopy
  1.             (1) NSPoint和NSSize,首先看看它们的结构体:  
  2.                   typedef struct _NSPoint{  
  3.                              float x ;  
  4.                              float y;  
  5.                    }NSPoint;  
  6.                   typedef struct _NSSize{  
  7.                          float width;  
  8.                          float height;  
  9.                   }NSSIze;  
  10.             (2)矩形类型NSRect  
  11.                    typedef struct _NSRect{  
  12.                            NSPoint origin;  
  13.                            NSSize size;   
  14.                    }NSRect;  
  15.             (3)它们也一样有:创建数据类型的快捷函数,NSMakePoint(),NSMakeSize()和NSMakeRect().  

4.字符串类型操作:           

[plain] view plaincopy
[plain] view plaincopy
  1.        (1)创建字符串,除了直接赋值创建NSString字符串外,还可以通过:stringWithFormat方法来通过
  2.               格式字符串和参数创建NSString的  
  3.               +(id) stringWithFormat : (NSString *)format, .........例子如下: 
  4.               NSString *height;  
  5.               height = [NSString stringWithFormat : @"Your height is %d feet,%d inches",5,11];  
  6.              得到的字符串是“Your height is 5 feet, 11inches”. 
  7.                  这里需要注意的地方有两个,第一就是这个方法后面的省略号,表示这个方法可以接收多个以逗
  8.                  号隔开的其他参数,第二就是方法声明的开头是一个+号,它代表创建该类的类对象,我们把这
  9.                  种方法叫做“工厂方法”。  
  10.       (2)获得字符串大小:length,使用方法如下  
  11.               unsigned int length = [height length];  
  12.               此方法可以准确无误地处理国际字符串。如俄文,中文,日文等。  
  13.        (3)NSString字符串比较操作:  
  14.               1.-(BOOL) isEqualToString: (NSString *)aString; 使用如下  
  15.                    NSString *thing1 = @“hello 2”;  
  16.                    NSString *thing2 ;  
  17.                    thing2 = [NSString stringWithFormat : @"hello %d",5 ];  
  18.                    if ([thing1 isEqualToString  : thing2]){  
  19.                          NSLog(@"They are the same!");  
  20.                    }//注意此方法是比较字符串指针向的值,而“==”比较的是指针值。  
  21.               2.-(NSComparisonResult)compare : (NSString *)string;
  22.                    用法如下,首先先看看NSComparisonResult结构体:  
  23.                          typedef enum _NSComparisonResult{  
  24.                                NSOrderedAscending = -1;  
  25.                                NSOrderedSame,  
  26.                                NSOrderedDEscending  
  27.                          }NSComparisonResult;  
  28.                     例子:[@"zoinks"  compare : @"jinies"]将会返回NSOrderedDescending
  29.                     (表示左侧的字符在右侧字符的后面)   
  30.               3.-(NSComparisonResult) compare : (NSString *)string  
  31.                                       options : (unsigned)mask;  
  32.                   options参数是一个位掩码,你可以使用位或运算符来添加选项标记。例子如下:  
  33.                   if( [ thing1 compare : thing2  
  34.                                options : NSCaseInsensitiveSearch | NSNumericSearch ]
  35.                      == NSOrderedSame)  
  36.                   { NSLog (@"They match!") ; }  
  37.   
  38.         (4)字符串内是否包含别的字符串  
  39.                1 .-(BOOL)hasPrefix:(NSString *)aString;//检查字符串是否以另一个字符串开头  
  40.                   -(BOOL)hasSuffix:(NSString *)aString;//检查字符串是否以另一个字符串结尾  
  41.                   -(NSRange)rangeOfString: (NSString *)aString ;//将rangeOfString:发送给一个
  42.                   NSString对象时,传递的参数是要查找的字符串,它会返回一个NSRange struct 来告诉你
  43.                   与这个字符串相匹配的 部分在哪里以及能够匹配上的字符串个数。 
  44.                     例子:NSRange range;  
  45.                                   NSString *filename = @"draft-chapter.pages";  
  46.                                   range = [fileName rangeOfString : @"chapter"];  
  47.                     返回的range.start为6,range.length为7.如果传递的参数在接收字符串中没有找到,那
  48.                     range.start则等于NSNotFound。  


5.可变性,NSString是不可变的,这并不意味着你不能操作它们。Cocoa提供了一个NSString的子类,叫做NSMutableString(可以改变的字符串)

[plain] view plaincopy
  1.   
[plain] view plaincopy
  1. (1)-(id)stringWithCapacity: (unsigned)capacity; //注意这个容量只是给NSMutableString的一个建议。  
  2.                   例子:string = [NSMutableString stringWithCapcity : 42];  
  3. (2)有了一个可变的字符串,那就可以对它执行各种操作了:  
  4.                 1.-(void)appendString : (NSString *)aString;  
  5.                 2.-(void)appendFormat : (NSString *)format , ......;  
  6.                例子:NSMutableString *string;  
  7.                           string = [NSMutableString stringWithCapacity: 50];  
  8.                           [  string appendString : @"Hello  there"];  
  9.                           [ string appendFormat : @"human %d!",39 ];
  10.                          这段代码的运行结果是string被赋值为“Hello there human 39!”  
  11.                 3.-(void)deleteCharactersInRange : (NSRange) range;  
  12.                        我们经常会把deleteCharactersInRange:和rangeOfString:连在一起使用,例子:  
  13.                         NSMuableString *friends;  
  14.                         friends = [ NSMutableString  stringWithCapacity: 50];  
  15.                         [ friends appendString : @"JAmes  BethLynn  Jack  Evan" ];  
  16.                       接下来,找到JAck的字符范围:  
  17.                         NSRange  jackRange;  
  18.                         jackRange = [friends rangeOfString: @"Jack"];  
  19.                         jackRange.length++;//这句的意思是,把后面的空格也算上。  
  20.                         [ friends deleteCharactersInRange : jackRange ];  
  21.                        结果为:“James  BethLynn  Evan”  

    好了,今天就写到这里,继续会有更新,转载请注明:http://blog.csdn.net/yuzhiboyi

















友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: