zoukankan      html  css  js  c++  java
  • 黑马程序猿————OC在Foundation框架结构和字符串


    ------<a href="http://www.itheima.com" target="blank">Java火车、Android火车、iOS火车、.Net火车</a>、我们期待与您的沟通!

    -------

    Foundation框架中包括了非常多开发中经常使用的数据类型,比方。结构体,字符串。集合类等。是其它iOS框架的基础。

    假设想要使用Foundation框架的数据类型,那么仅仅要包括它的

    头文件就能够了。即#import<Foundation/Foundation.h>


    Foundation中经常使用的结构体:

    在foundation框架中,经常使用的结构体有四种:

    NSRange

    NSPointCGpoint

    NSSizeCGSize

    NSRectCGRect


    NSRange: 表示范围(location   length)

    NSRange的定义:位置和长度

    typedef struct _NSRange {
         NSUInteger location;
         NSUInteger length;
         } NSRange;
    
    
    NSRange的基本使用:
    // @"i love oc"  //love的范围
        NSRange r1 = {2,4};  //可读性比較差,开发中一般不用
        NSRange r2 = {.location = 2, .length = 4};  //不用
        
        //实际开发中最经常使用的是使用Foundation自带的函数。例如以下:
        NSRange r3 = NSMakeRange(2, 4); //要求掌握
        
        //字符串创建最快的方式
        NSString *str = @"i love oc";
        
       //rangeOfString查找某个字符串的范围,查找love的范围
        //假设找不到,length= 0,location = NSNotFound == -1
        NSRange range = [str rangeOfString:@"love"];
        //打印出来
        NSLog(@"loc = %ld,length = %ld",range.location,range.length);
    

    NSPointCGPoint:(表示坐标)

    NSPoint和CGPoint是一样的。开发中经经常使用CGPoint

    typedef CGPoint NSPoint;
    struct CGPoint {
      CGFloat x;
      CGFloat y;      //CGFloat类型。实际就是double
    };
    typedef struct CGPoint CGPoint;
    
    NSPointCGPoint的使用:

        //开发中CGPoint经常使用,由于他是跨平台的
        //创建结构体变量
        NSPoint p1 = CGPointMake(10, 10);    //最经常使用
        CGPoint p2 =  NSMakePoint(10, 10);
    

    NSSizeCGSize:(表示UI元素的尺寸,宽度和高度)

    使用方法基本和NSPoint一样

    typedef CGSize NSSize;
    struct CGSize {
      CGFloat width;
      CGFloat height;
    };
    typedef struct CGSize CGSize;

    NSSizeCGSize的基本使用:

     //创建结构体变量
       NSSize s1 =  CGSizeMake(100, 50);
       NSSize s2 =  NSMakeSize(100, 50);
       CGSize s3 =  NSMakeSize(200, 100);

    NSRectCGRect:(表示一个UI元素的位置和尺寸       CGPoint   CGSize)

    typedef CGRect NSRect;
    struct CGRect {
      CGPoint origin;
      CGSize size;
    };
    typedef struct CGRect CGRect;

    基本使用:

    //创建结构体变量
        //方式一
        CGRect  r1 = CGRectMake(0, 0, 50, 100);
        //方式二
        CGRect r2 = {{0,0},{50,100}};
        //方式三
        CGRect r3 = {p1 ,s2};
        
        CGRect r4 = {CGPointZero,CGSizeMake(50, 100)};
        
       //表示原点,开发中常常常使用
        //CGPointZero ==CGPointMake(0, 0);
        
    //    //常规的使用方式:
    //    CGRect myRect(CGFloat x,CGFloat y,CGFloat width,CGFloat height)
    //    {
    //        CGRect rect;
    //        rect.origin.x = x;
    //        rect.origin.y = y;
    //        rect.size.width = width;
    //        rect.size.height = height;
    //        
    //        return  rect;
    //    }
        //开发中常常是先把结构体转成字符串,然后再打印
        //结构体转换为字符串的方式。要求掌握
        
        //NSString *str =  NSStringFromPoint(p1);  //把坐标转换成字符串
        
        //NSString *str = NSStringFromSize(s3);  //吧尺寸转换成字符串
        
        NSString *str = NSStringFromRect(r1);   //把位置和尺寸转换成字符串的形式打印
         NSLog(@"%@",str);
       
        //尝试打印,此方式比較麻烦。开发中不使用
       // NSLog(@"x = %f,y = %f ,width = %f,height = %f ",r1.origin.x,r1.origin.y,r1.size.width,r1.size.height);


    Foundation 框架中一些经经常使用到的结构体函数:

    使用这些函数的前提是加入CoreGraphics框架

     //比較两个点的位置是否同样 (x 、y)
      BOOL b = <span style="color:#ff0000;"> CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
        //比較两块区域是否同样]
        CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
        //比較两个尺寸是否同样
       CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)
        //推断这个点是否在区域范围内
        // x(50,100)  y(40,90)
        BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 1010, 50), CGPointMake(60, 40));
        
        NSLog(@"%d",b2);
    


    
    

    NSString:

    NSString :不可变字符串

    NSMutableString :可变字符串

    字符串的创建方式:

     //字符串的创建
        NSString *s1 = @"jack";
        
        NSString *s2 = [[NSString alloc]initWithString:@"jack"];  //差点儿没人用
        
        NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d",10];
        
        //C字符串 --> OC字符串
        NSString *s4 = [[NSString alloc]initWithUTF8String:"jack"];
        
        // OC字符串 --> C字符串
        const char *cs = [s4 UTF8String];
        
        // NSUTF8StringEncoding 用到中文就能够用这样的编码
        //  读取文件内容的方法
        NSString *s5 = [[NSString alloc]initWithContentsOfFile:@"/Users/mymac/Desktop/test/内存管理/总结.m" encoding:NSUTF8StringEncoding error:nil];
        
        NSLog(@"
    %@",s5);
        
        //URL :资源路径
        //协议头://路径
        //(本地文件)file://
        // ftp://
        //http://weibo.com/a.png
        
        //NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/mymac/Desktop/test/内存管理/总结.m"];
        
        NSURL *url = [NSURL fileURLWithPath:@"//Users/mymac/Desktop/test/内存管理/总结.m"];
        
        NSString *s6 =  [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
        
        NSLog(@"s6 = 
    %@", s6);
        
        
        /*
         创建字符串的时候通常也有一些类方法
         一般都会有一个类方法跟对象方法配对,开发中常常使用类方法。非常少使用对象方法,以节省时间
         [NSURL URLWithString:(NSString *)];
         
         [NSString stringWithFormat:@""];
         
         [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
         */
    

    字符串写到文件里的方式:

    //字符串写到文件里的方法
       [@"jack
    jack" writeToFile:@"/Users/mymac/Desktop/test/内存管理/总结.m "atomically:YES encoding:NSUTF8StringEncoding error:nil];
        
        NSString *str = @"rweudjkqsdjiw";
        
        NSURL *url = [NSURL fileURLWithPath:@"/Users/mymac/Desktop/test/内存管理/总结.m"];
        
        [str writeToFile:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
    

    可变字符串的使用:

     //可变字符串的创建
        NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 10"];
        
        //拼接内容到S1的后面
        [s1  appendFormat:@" 11 12"];
        
        //获取is的范围
        NSRange range = [s1 rangeOfString:@"is"];
        
        [s1 deleteCharactersInRange:range];  //删除
        
        NSString *s2 = [NSString stringWithFormat:@"age is 10"];
        
        NSLog(@"s1 = %@,s2 = %@",s1,s2);




    ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS火车、.Net火车</a>、我们期待与您的沟通! -------

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    第一章-环境准备
    selenium-pageobject设计模式
    自动化测试用例设计原则
    selenium隔离环境安装、以及示例
    json extractor获取返回值中动态新增的数据
    jmeter返回值乱码问题
    liunx命令
    SQL表结构语句
    测试网络脚本python
    C# 订单流水号生成
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4621294.html
Copyright © 2011-2022 走看看