黑马程序员-11-Foundation(常用的结构体)

---------------------- Java培训、.Net培训、Android培训、IOS培训、期待与您交流! ----------------------

1. Foundtaion 框架简介

    创建一个OC对象我们必须继承 NSObject, 而NSObject是依赖于Foundation框架的,除此之外框架中由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,方便我们开发;而且开发中常用到的对象集合,如数组、字典、集合;其他功能包括内存管理,处理基础文件系统、存储对象等,因此Foundation框架是IOS开发中必不可少的基础框架之一。


2. Foundation常用的结构体

   常用的结构体 :

         NSRange(location length)

         NSPoint\CGPoint

         NSSize\CGSize

         NSRect\CGRect (CGPint CGSize)

    a. NSRange

        (1) NSRange的原型 : 

    typedef struct _NSRange {
        NSUInteger location;                            // 存储元素的位置
        NSUInteger length;                              // 描述元素的长度
    } NSRange;

        (2) NSRange的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSRange r1 = {2,4};
        NSRange r2 = {.length = 4, .location = 2};
        */
        NSRange r3 = NSMakeRange(2,4);                    // 开发中一般使用这种方式
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    /* 
    查找某个字符串在str中的范围
    如果找到使用NSRange来表示他的存储位置和长度
    如果找不到,length=0,location=NSNotFound==-1
    - (NSRange)rangeOfString:(NSString *)aString;
    */
    int main()
    {
        NSSting *str = @"hello oc";
        NSRange r = [str rangeOfString:@"java"];
        
        NSLog(@"location = %ld , length = %ld",r.location,r.length);                //  location = -1 , length = 0
        return 0;
    }

    b. NSPoint\CGPoint

        (1) NSPoint\CGPoint原型 : 

     // CGPoint
     struct CGPoint {
      CGFloat x;
      CGFloat y;
    };
    typedef struct CGPoint CGPoint; 
    
    // NSPoint
     typedef CGPoint NSPoint ;

        (2) NSPoint\CGPoint的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSPoint p1 = {2,4};
        // CGPoint p1 = {2,4};
        
        NSPoint p2 = {.y= 4, .x = 2};
        // CGPoint p2 = {.y= 4, .x = 2};
        */
        
        CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
        // NSPoint p3 = NSMakeNSPoint(2,4);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        // 比较两个点是否重合
        BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES
        
        // 表示原点
        // CGPointZero == CGPointMake(0,0)
        BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES
        
        // 将结构体转化为字符串
        NSString *str = NSStringFromPoint(CGPointMake(10,20));
        NSLog(@"p = %@",str);                                                                       //  p = {10, 20} 
        return 0;
    }


    c. NSSize\CGSize

        (1) NSSize\CGSize 原型 : 

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

        (2) NSSize\CGSize 的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        NSSize s1 = CGSizeMake(100, 50);                                                           // 开发中一般使用这种 
        NSSize s2 = NSMakeSize(100, 50);
        CGSize s3 = NSMakeSize(200, 60);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        BOOL b = CGSizeEqualToSize(CGSizeMake(100,200),CGSizeMake(100,200));                       // b = YES
        NSSize s = CGSizeMake(100,200);
        NSString *str = NSStringFromSize(s);
        NSLog(@"size : %@",s);                                                                    // size : {100, 200}
        return 0;
    }

    d. NSPoint\CGPoint

        (1) NSPoint\CGPoint原型 : 

     // CGPoint
     struct CGPoint {
      CGFloat x;
      CGFloat y;
    };
    typedef struct CGPoint CGPoint; 
    
    // NSPoint
     typedef CGPoint NSPoint ;

        (2) NSPoint\CGPoint的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
        /* 使用C语言的结构体初始化方式,但在OC开发中一般不用
        NSPoint p1 = {2,4};
        // CGPoint p1 = {2,4};
        
        NSPoint p2 = {.y= 4, .x = 2};
        // CGPoint p2 = {.y= 4, .x = 2};
        */
        
        CGPoint p3 = CGPointMake(2,4);                                                        // 开发中一般使用这种方式
        // NSPoint p3 = NSMakeNSPoint(2,4);
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGPointEqualToPoint、CGPointZero的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        // 比较两个点是否重合
        BOOL b = CGPointEqualToPoint(CGPointMake(10,20),CGPointMake(10,20));                        // b = YES
        
        // 表示原点
        // CGPointZero == CGPointMake(0,0)
        BOOL b = CGPointEqualToPoint(CGPointZero ,CGPointMake(0,0));                                // b = YES
        
        // 将结构体转化为字符串
        NSString *str = NSStringFromPoint(CGPointMake(10,20));
        NSLog(@"p = %@",str);                                                                       //  p = {10, 20} 
        return 0;
    }


    e. NSRect\CGRect

        (1) NSRect\CGRect 原型 : 

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

        (2) NSRect\CGRect 的初始化方式 : 

    #import <Foundation/Foundation.h>
    
    int main()
    {
         // 两个对焦点确定一个矩形
        CGRect r1 = NSMakeRect(0, 0, 10, 20);
    
        NSRect r2 = CGRectMake(0, 0, 10, 20);                                                         // 开发中一般使用这种方式
        return 0;
    }

        (3) 使用例子 :

    #import <Foundation/Foundation.h>
    
    // 使用这些CGSizeEqualToSize的前提是添加CoreGraphics框架
    #import <CoreGraphics/CoreGraphics.h> 
    
    int main()
    {
        NSRect r2 = CGRectMake(0, 0, 10, 20);
        NSString *str = NSStringFromRect(r1);
        NSLog(@"rect = %@",str);                                                                 //  rect = {{0, 0}, {10, 20}} 
        return 0;
    }


---------------------- Java培训、.Net培训、Android培训、IOS培训、期待与您交流! ---------------------- 

 详情请查看:http://edu.csdn.net/heima



你可能感兴趣的:(黑马程序员-11-Foundation(常用的结构体))