美文网首页
Foundation框架

Foundation框架

作者: 小李不木 | 来源:发表于2019-06-10 12:53 被阅读0次

    Foundation 框架中有很多对象方法和类方法,其中很多方法都是以后开发常用的工具,特别是几个集合类。

     1>:NSRange 是一个结构体,里面有两个unsigned long 类型的属性,location , length  表示坐标和长度,表示一个     范围。

    2>:NSPoint 或者 CGPoint 里面有两个unsigned long类型的属性,x, y 表示一个点的坐标。

    3>:NSSize   或者 CGSize里面有两个unsigned long类型的属性 width , height 表示尺寸。

    4>:NSRect    或者 CGRect里面有个NSPoint类型的属性,origin 和一个NSSize 类型的属性 size.

    NSRange 可以用来计算一个字符串的范围

    基本用法:

    1:@"i love  ios "  中love 的范围

    NSRange  r = {2,4 };

    //  2 表示的是Location 位置是2 ,4 表示length 长度是4 ,在计算location 时,空格也计算在内

    2:NSRange r2 = {.location 2 , .length = 4 };

    //  这种赋值方式,类似于C中的数组,但是这种方式一般不用

    3:也可以类似于函数使用

    NSRange r3 = NSMakeRange(2,4);

    //  调用了NSRange 的一个方法

    查找某个字符串字符中的范围

    NSString * s = @" i love  ios ";

    NSRange  range = [s  rangeofstring:@"love"];di

    // 调用方法计算出字符串的所在范围

    // 如果找不到这个字符串,就会返回0;此时location == NSNotFound

    NSPoint的基本用法:

    一般用CGPoint 表示

    1:NSPoint p1 = NSMakePoint(10,10);

    // 表示创建了一个点,这个点的坐标是 x = 10, y = 10;

    也可以用 CGPoint p 表示

    2:CGPoint p2 =  CGPointMake (10,10);

    1与2 等价

    NSSize 和 CGSize

    基本使用:

    1:NSSize s =  NSMakeSize(100,20);

    //  创建一个新的NSSize类型,weight  =  100, height = 20'

    2:CGSize s1= CGSizeMake (100,20);

      //  与1 等价

    NSRect  和 CGRect 

    基本使用

     赋值方式:

    CGRect r1 = CGRectMake(0,0,0,0);

    //  调用方法

    CGRect r2 = {{0,0},{2,3}};

    // 因为他里面的两个属性也是结构体类型

    CGRect r3 = {p,s1};

    //  利用上面创建好的结构体类型的变量

    1:CGRect r1 = (0,0,0,0 );

    // 创建的这个新集合是原点

    输出时:

    NSLog (@"x = %@,y = %@",r1.origin, r1.size);

    2:上面的这种方法较为麻烦,可以改为

    NSString * s = NSStringFromPoint(p);

    //  将CGPoint 类型的数据转换成字符串

    NSLog (@"%@",s );

    //  利用输出字符串,直接输出一个CGPoint 类型的数据

    NSString * s2 = NSStringFromSize(s1);

    // 将CGSize 类型的数据转换成字符串

    NSLog (@"%@",s2 );

    // 利用输出字符串,直接输出一个CGSize 类型的数据

    NSString * s3 = NSStringFromRect(s1);

    // 将CGRect 类型的数据转换成字符串

    NSLog (@"%@",s 3);

    利用输出字符串,直接输出一个CGRect类型的数据

    几个常用方法:

    1:CGSizeZero 就相当于 CGSizeMake(0,0);

    2:CGRectZero  就相当于 CGRectMake(0,0);

    3: CGPointZero    就相当于 CGPointMake(0,0);

    使用:

    CGRect r4 = { CGPointZero ,CGSizeMake(20,40);

    4:CGPointEqualToPoint (CGPointMake(10,4),CGPointMake(6,0));

    //  判断两个点是否相同

    5:CGSizeEqualToSize (CGSizeMake(10,4),CGSizeMake(6,0));

    //  判断两个尺寸是否相同

    6:CGRectEqualToRect(CGRectMake(10,4),CGRectMake(6,0));

    //  判断两个范围是否相同

    7:CGRectContainsPoint (CGRect   rect, CGPoint  point);

    //  判断一个点是否在一个范围内

    例如:

    CGRectContainsPoint (CGRectMake(40,30) , CGPointMake(50,70));

    // 返回值是BOOL类型

    NSString 类

    NSString包括了1:NSMutableString  

                 //  可变字符串

                  2:NSString

                 //  不可变字符串

    创建方式有:

    1:NSString *s = @"jack";

    //  最直接的一种方式

    2: NSString * s2 =[[NSString alloc] initWithString:@"jack"];

      //  调用了一个方法,一般不用这种方式

    3:NSString * s3 = [[NSString alloc] initWithFormat:@"%d",10];

    //  它能把字符串拼接起来

    4: NSString * s4=[[NSString alloc] initWithUTF8String:"jack"];

    //  将c语言字符串转换成oc字符串

    5:const char * s5 =  [  s4    UTF8string ];

    // 将oc语言字符串转换成c字符串

    cocoa把字符串处理封装到NSString类中了,这个类提供了字符串处理的常用方法,详细请见apple develop document

    NSString *temp =[[NSString alloc] initWithString:@"test"];

    //NSLog(@"%d",[temp retainCount]);

    [temp release];

    //NSLog(@"%d",[temp retainCount]);

    NSMutableString *str=[[NSMutableString alloc] initWithString:temp];

    [str appendFormat:@"NSString"];

    NSLog(@"%@",str);

    NSMutableString  的基本使用

    NSMutableString  是可变的字符串,意味着它里面的内容可以被改变。可以添加,或者删除

    例如:

    NSMutableString * s1 = [NSMutableString   stringWithFormat:@"age is 10"];

    // 创建一个可变的字符串,里面的内容是 age is 10;

    [s1  appendString:@"11 13"];

    // 往s1 这个字符串中添加了 11 13;

    //  这个方法没有返回值,直接在s1上添加字符

    [s1    deleteCharacterInRange:NSMakeRange(2,3)];

    //  删除字符串,locationg 是2 ,length 是3 的、

    或者用:

    NSRange  range  = [s1     rangeOfString:@“age”];

    //  获取age 字符串在整个字符串中的位置

    [s1   deleteCharacterInRange:range ];

    //  利用字符串的位置来删除字符串。比1 好用

    NSString * s2 = [ NSString  stringWithFormat:@"age is 10"];

     //  创建一个NSString类型数据

    NSString * s3 = [s2   stringByAppendingString:@"11 13"];

    //  这种方法也可以在 age is 10 后面加上 11 13 

    //  跟NSMutableString 的本质是完全不同的,他是返回了一个新的字符串s3  age is 10 11 13 , 

    //  原来的s2 字符串还是 age is 10 

    NSArry 

    NSArry 可以分为两类:1:NSArry 

                         2:NSMutableArry 

    NSArry 是不可变的数组,NSMutableArry 是可变的数组

    NSArry类似于c语言中的数组,可以存放一组数据。但是它是存放Oc对象的数组,只能存放oc数组,不能存放基本数据类型。也不能存放nil。

    1:利用c语言数组存放对象

    person * p1 = [ [person  alloc  ]  init ];

    // 创建一个新的person 对象

    person * p2 = [ [person  alloc  ]  init ];

    // 在创建一个新的person 对象

    person * a[3] = {p1,p2};

    //  设置一个数组,里面存放三个person * 类型的数据。

    2:利用oc语言数组存放对象

    NSObject * person[5] =  {p1,[ [person  alloc  ] init]};

    //  设置一个oc数组,里面存放5个oc对象,任何类型都可以。

    1中只能存放person * 类型的数据,有局限性,是面向过程的操作

    2中可以存放任何类型的数据,是以面向对象来操作数据。

    NSArry 是不可变数组,里面的内容永远不能改变。

    1>:例如:  NSArry  * a = [NSArry  arry ];

            //  创建一个新的oc数组,里面是空的,没有任何内容

    2>: NSArry  * a2 = [NSArry  arryWithObject:@"jack" ];

            //  创建一个新的oc数组,里面有一个元素

    3>:NSArry  * a3  = [NSArry  arryWithObjects:@"jack" ,@"rose",nil];

             //  创建一个新的oc数组,里面有2个元素

             // nil 是数组元素结束的标志,会把nil 之前的所有东西当做数组元素。

    4>:[a3   count];  

     等价于:a3.count;

    // 调用这个count方法可以知道数组里面有几个元素。

    2: 访问数组元素

    1>: [a3   objectAtIndex:1];

    //  意思是访问数组a3里面的第一个元素,就是 “rose”

    2>: a3 [ 1];

    //  这个是编译器特性,自动帮我们生成1 中的代码,也是访问数组中第一个元素

      可以快速创建一个数组对象

    NSArry * a4 = @[ @"jack",@"rose",@"jim"];

    //  这个也是编译器特性,自动帮我们生成相应的代码

    3:遍历数组

    最基本的以前的方法:

    person * P1 = [[person  alloc  ]  init];

    // 创建一个新的person 对象

    NSArry * arry = @[p1,@"jack"];

    // 创建一个新的数组里面有两个元素

    //  设置一个for循环遍历数组

    for (int i = 0; i<arry.count ; i++)

    {

       NSLog(@"%@",arry[i]);

    //  输出数组中的每个元素

     if (i==1 )

     {

    break;

    }

    }

    2>: 第二种方式

      for (id obj  in arry )

    {// id obj 代表数组里的每个元素

    // 每次执行循环体都会把数组里的值,赋给 obj

     NSLog(@"%@",obj);

    //  打印数组里的元素

     }

    优缺点:这种方法较1 是简单些,可是却不能知道每次打印的是第几个元素。可以进行改进

     int i = 0 ;

      for (id obj  in arry )

    {// id obj 代表数组里的每个元素

    // 每次执行循环体都会把数组里的值,赋给 obj

     NSLog(@"%@",obj);

    //  打印数组里的元素

    i++;

    NSLog(@"%d",i);

     }

    或者用

      for (id obj  in arry )

    {// id obj 代表数组里的每个元素

    // 每次执行循环体都会把数组里的值,赋给 obj

    NSUInteger  i = [arry  indexOfObject:obj ];

    //  调用一个方法知道当下的obj在数组是第几个元素

     NSLog(@" %d-%@",i,obj);

    //  打印数组里的元素,和它所在的位置。

     }

    3:最常用的方法:

    [arry  enumerateObjectUsingBlock:^(id obj , NSUInteger  idx, Bool * stop)

                 {

           //  调用了block 方法,把一个block 作为一个形参传入进去,并且这个block 接受三个参数

           NSLog(@" %ld-%@",idx,obj);

    //  id obj 代表当前元素,idx 代表元素所在位置

    //  没拿到一个数组元素就会调用一次block,并且把元素传入block。

    }]

    其实上述方法内部有个for 循环来判断什么时候停止遍历。内部是用Bool * stop 来设置 遍历的停止或者进行。

    当stop 是yes 时,停止,当stop 是 no 时,接着遍历。

    相关文章

      网友评论

          本文标题:Foundation框架

          本文链接:https://www.haomeiwen.com/subject/ldfzxctx.html