`
JavaZhuang
  • 浏览: 9559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

5 2.Foundation1-常用结构体

    博客分类:
  • IOS
 
阅读更多

5 2.Foundation1-常用结构体

 

NSRange

1)、在Foundation/NSRange.h中对NSRanger的定义

         Typedef  struct  _NSRange{

                   NSUInteger  location;

                   NSUInteger  length;

}  NSRange;

//typedef unsigned long NSUInteger

 

2)、这个结构体用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。

3)location表示该范围的起始位置

4)length表示该范围内所含的元素个数

5)、比如“I  love  objective-c”中的“obj”可以用location7length3的范围来表示

6)

 

 

列一:

main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

void test(){

    //定义了Date这个结构体类型

    struct Date{

        int year;

        int month;

        int day;

    };

    //定义结构变量

    struct Date d = {2013, 4, 5};

    d.day = 6;

}

 

void test1(){

    typedefstruct Date{

        int year;

        int month;

        int day;

    } myDate;

    

    myDate d = {2013, 4, 5};

}

 

void range(){

    NSRange range = NSMakeRange(8, 10);

    NSLog(@"location:%zi", range.location);

    NSLog(@"length:%zi", range.length);

    

    NSString *str = NSStringFromRange(range);

    NSLog(@"%@", str);

    //NSLog(@"%@", range); 错误做法,%@代表着OC对象

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool {

        range();

    }

    return 0;

}

 

运行结果:

2013-12-11 09:37:48.757 OC10-内存管理2-set方法的内存管理[319:403] location:8

2013-12-11 09:37:48.762 OC10-内存管理2-set方法的内存管理[319:403] length:10

2013-12-11 09:37:48.763 OC10-内存管理2-set方法的内存管理[319:403] {8, 10}

 

 

 NSPoint

1)、在Foundation/NSGeometry.h中对NSPoint的定义 typedef  CGPoint  NSPoint;

2)、在CoreGraphics/CGGeometry.h中对CGPoint的相关定义

Struct  CGPoint{

         CGFloat  x;

         CGFloat  y;

};

Typedef  struct  CGPoint  CGPoint;

// #define  CGFLOAT_TYPE  double

// typedef  CGFLOAT_TYPE  CGFloat;

3)NSPoint CGPoint是等价的

4)、这个结构体代表的是平面中的一个点(x, y)

列二:

main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

 

void point(){

    //NSPoint p;

    CGPoint p;

    p.x = 1;

    p.y = 10;

    

    p = NSMakePoint(10, 9);

    //常见的方式

    p = CGPointMake(8, 9);

    

    NSString *str = NSStringFromPoint(p);

    NSLog(@"%@", str);

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool 

        point();

    }

    return 0;

}

 

 

 

NSSize

1)、在Foundation/NSGeometry.h中对NSSize的定义 typedef CGSize NSSize

2)、在CoreGraphics/CGGeometry.h中对CGSize的相关定义

 

3)、这个结构体用来存储宽度和高度

4)、可以利用NSMakeSize()CGSizeMake()创建CGSize

例三:

 

 main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

void size(){

    NSSize size;

    size.width = 100;

    size.height = 90;

    

    size = NSMakeSize(9080);

    size = CGSizeMake(108);

    

    NSString *str = NSStringFromSize(size);

    NSLog(@"%@", str);

    

}

 

int main(int argc, const char * argv[])

{

    

    @autoreleasepool {

        size();

    }

    return 0;

}

 

 

NSRect

 

1) Foundation/NSGeometry.h中对NSRect的定义 typedef  CGRect  NSRect;

 

2) CoreGraphics/CGGeometry.h中对CGRect的相关定义

 

Struct  CGRect{

 

         CGPoint  origin; //矩形左上角坐标

 

         CGSize   size; //矩形的宽度和高度

 

};

 

typedef  struct  CGRect  CGRect;

 

3) 这个结构体用来存储宽度和高度

 

4)可以利用NSMakeRect() CGRectMake() 创建CGRect

 

 main.m

 //

//  main.m

//  Foundation1 - 结构体

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

#import <Foundation/Foundation.h>

 

void rect(){

    NSRect rect; // CGRect rect;

    rect.origin.x = 10;

    rect.origin.y = 11;

    

    rect.size.width = 100;

    rect.size.height = 90;

    

    rect = NSMakeRect(10, 10, 80, 80);

    rect = CGRectMake(8, 9, 10, 12);

    

    NSString *str = NSStringFromRect(rect);

    NSLog(@"%@", str);

    

}

 

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        rect();

    }

    return 0;

}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics