bjective-C边学边记-7:Foundation Kit快速教程之 范围

bjective-C边学边记-7:Foundation Kit快速教程之 范围,第1张

概述Cocoa是由两个不同的框架组成:Foundation Kit 和 Application Kit(AppKit)。AppKit包含了所有的用户接口对象和高级类。 1.范围 NSRange:用来表示相关事物的范围,定义于NSRange.h。通常是字符串里的字符范围或者数组(NSArray)里的元素范围。 1 typedef struct

Cocoa是由两个不同的框架组成:Foundation Kit 和 Application Kit(AppKit)。AppKit包含了所有的用户接口对象和高级类。


1.范围
NSRange:用来表示相关事物的范围,定义于NSRange.h。通常是字符串里的字符范围或者数组(NSArray)里的元素范围。

          1       typedef       struct       _NSRange {
2 NSUInteger location;
3 NSUInteger length;
4 } NSRange;

 


创建方法:
直接给字段赋值:

          1       NSRange range;
2 range.location = 17 ;
3 range.length = 4 ;

 


或者,应用C语言的聚合结构赋值机制:

          NSRange range       =       {      17      ,      4      };    

 


或者,适用Cocoa提供的函数NSMakeRange():

          1       NSRange range       =       NSMakeRange (       17      ,      4       );    

 


使用NSMakeRange函数的好处是你可以在任何能够使用函数的地方使用它。

 

 

 

2.几何数据类型
点:NSPoint    //NSRange.h

          1       typedef       struct       _NSPoint {
2 CGfloat x;
3 CGfloat y;
4 } NSPoint;

 

 

尺寸:NSSize    //NSGeometry.h

          1       typedef       struct       _NSSize {
2 CGfloat wIDth;
3 CGfloat height;
4 } NSSize;

 

 

矩形:NSRect //NSGeometry.h

          1       typedef       struct       _NSRect {
2 NSPoint origin;
3 NSSize size;
4 } NSRect;

 

 

创建函数:NSMakePoint(),NSMakeSize(),NSMakeRect()

将这些数据类型定义成C的struct而不是Objective-C的对象最根本的原本是因为性能。

 

3.字符串
1)创建格式字符串:NSSring的stringWithFormat:

          1        Nsstring       *      myname;
2 myname = [Nsstring stringWithFormat:
3 @" My name is %@,and I am %d yeas old. " ,
4 @" Elf Sundae " , 22 ];

 

 
2)Nsstring中的length方法返回字符串中的个数,可以处理国际字符串。如

   
          1       NSLog(      @"      %d      "      ,[      @"      test测试      "       length]);       //      返回6    

 

 

3)isEqualToString:字符串比较,返回BOol

          1        Nsstring       *      thing1       =             @"      hello,8      "      ;
2 Nsstring * thing2 = [Nsstring stringWithFormat:
3 @" hello,%d " , 7 ];
4 if ([thing1 isEqual: thing2]){
5 NSLog( @" Yes,they are the same. " );
6 } else {
7 NSLog( @" NO,they are not the same. " );
8 }

 

 

compare:逐个字符进行比较,

          1       -       (NSComparisonResult)compare:(Nsstring       *      )aString    

 


compare:options: 带选项的比较字符串

          -       (NSComparisonResult)compare:(Nsstring       *      )aString
options:(NsstringCompareOptions)mask

 

 


返回一个NSComparisonResult的枚举值:

          1       typedef       enum       _NSComparisonResult {
2 NSOrderedAscending = - 1 , // <
3   NSOrderedSame, // =
4   NSOrderedDescending // >
5   } NSComparisonResult;

 

 

“==”运算符只判断两个字符串的指针数值,而不是它们所指的对象,以下例子请区别:

Nsstring *thing1 = @"hello,8";

Nsstring *thing2 = [Nsstring stringWithFormat:

@"hello,%d",8];

if ([thing1 isEqual: thing2]){

NSLog(@"Yes,they are the same.");

else {

NSLog(@"NO,they are not the same.");

}

 

if (thing1 == thing2){

NSLog(@"thing1 == thing2");

else{

NSLog(@"thing1 != thing2");

}

输出:
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] Yes,they are the same.
2010-10-21 14:47:14.282 FoundationKit1[1965:a0f] thing1 != thing2

 

字符串匹配查询
// 检查字符串是否以另一个字符串开头

          -       (BOol)hasPrefix:(Nsstring       *      )aString    

 


// 检查字符串是否以另一个字符结尾

          -       (BOol)hasSuffix:(Nsstring       *      )aString    

 


例如:

          BOol b       =       [      @"      test      "       hasSuffix:       @"      st      "      ];     

 

 

 

// 查询是否包含某字符串,返回匹配部分在哪里以及能够匹配的字符个数(NSRange类型)

          -       (NSRange)rangeOfString:(Nsstring       *      )aString    

 


Returns {NSNotFound,0} if aString is not found or is empty (@"").

          //       rangeOfString:options:      
- (NSRange)rangeOfString:(Nsstring * )aString options:(NsstringCompareOptions)mask

 

 

 

4)可变性
Nsstring是不可变的,一旦Nsstring被创建,就不能改变它。可以用它来生成新的字符串,查找字符串或将它与其他字符串比较,但是不能以删除字符或者添加字符的方式来改变它。
如果想改变字符串,请使用Nsstring的子类NSMutableString。
Nsstring类似Java中的String,NSMutableString类似与Java中的StringBuffer。
创建NSMutableString:stringWithCapacity:

          +       (ID) stringWithCapacity: (unsigned) capacity;    

 


这个capacity(容量)只是给NSMutableString的一个建议,字符串的大小并不限制与所提供的capacity,这个capacity只是个最优值。

          NSMutableString       *      string      ;
string = [NSMutableString stringWithCapacity: 42 ];

 


一旦有了一个可变字符串,就可以对它执行各种 *** 作了。
附加字符串:appendString:    或   appedFormat:
由于NSMutableString是Nsstring的之类,所以在任何使用Nsstring的地方都可以用NSMutableString代替,与实例方法一样,继承同样对类方法(类似其他语言中的静态方法,定义前缀为加号 + )也适用。
Example:

OBJECTIVE-C CODE   :NSMutableString
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#import <Foundation/Foundation.h>

int main (int argc,const char * argv[]) {
NSautoreleasePool * pool = [[NSautoreleasePool alloc] init];

//NSMutableString
NSMutableString *string;
// 创建
string = [NSMutableString stringWithCapacity:40];

// append
[string appendString: @"Hello,"];
[string appendFormat: @"World! %d",1024];
NSLog(@"%@",string); // Hello,World! 1024

// delete characters
NSRange worldRange;
worldRange = [string rangeOfString: @"World"];
[string deleteCharactersInRange:worldRange];
NSLog(@"%@",! 1024

// 由于NSMutableString是继承自Nsstring,
// 所以NSMutableString可以使用Nsstring的方法
NSMutableString *str;
str = [NSMutableString stringWithFormat: @"My age is %d",22];
NSLog(@"%@",str);

[pool drain];
return 0;}
总结

以上是内存溢出为你收集整理的bjective-C边学边记-7:Foundation Kit快速教程之 范围全部内容,希望文章能够帮你解决bjective-C边学边记-7:Foundation Kit快速教程之 范围所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存