oc-Foundation_01_NSRange_CGPint_CGSize

Foundation_01_NSRange_CGPint_CGSize

一、NSRange

1.1、结构体 NSRange

    typedef struct _NSRange
    {
      unsigned int location;
      unsigned int length;
    }NSRange;

这是一个用结构体来表示相关事物的范围,通常是字符串里面的字符范围,或者数组的元素范围。

1.2、NSRange的三种定义方式

1.2.1、NSRange的第一种定义方式,直接赋值
NSRange range;
range.location = 2;
range.length = 4;
1.2.2、NSRange的第二种定义方式,使用C语言的聚合结构赋值机制
NSRange range = {2,4};
1.2.3、NSRange的第三种定义方式,使用Cocoa的NSMakeRange()函数,好处在于任何能够使用函数的地方都能够使用NSMakeRange
NSRange range = NSMakeRange(2,4);
1.2.4、代码实例:
//  main.m
//  08_Foundation01
//  Created by 杞文明 on 15/8/14.
//  Copyright (c) 2015年 杞文明. All rights reserved.   
#import <Foundation/Foundation.h>

void testXmNSRange(){
    NSString *textStr = @"wo_shi_xiao_ming";
    //1.NSRange的第一种方式 :直接赋值
    NSRange range1;
    range1.location = 7;
    range1.length = 4;
    NSLog(@"------%@",[textStr substringWithRange:range1]);
    //2.NSRange的第二种定义方式:C语言的聚合结构
    NSRange range2 = {2,5};
    NSLog(@"------%@",[textStr substringWithRange:range2]);
    //3.NSRange的第三种定义方式:Cocoa提供的快捷函数
    NSRange range3 = NSMakeRange(6, 3);
    NSLog(@"------%@",[textStr substringWithRange:range3]);
}

int main(int argc, const char * argv[]) {
    testXmNSRange();
    return 0;
}

这里写图片描述


二、几何数据类型——CGPint和CGSize

处理几何图形的数据类型,他们的名称前面都带有CG前缀,如CGPintCGSize。这些类型是由Core Graphics框架提供的,用来进行2D渲染的。Core Graphics是用C语言写的,因此可以在代码中使用C语言的数据类型。

2.1 CGPint表示的是笛卡尔平面中的一个坐标(x,y)

struct CGPint
{
  float x;
  float y;
}
CGSize用来存储长度和宽度

struct CGSize
{
  float width;
  float height;
}
Cocoa中提供了一个矩形数据类型,它由坐标和大小符合而成

struct CGRect
{
  CGPint origin;
  CGSize size;
}

2.2说明

为什么这些数据类型是C的struct结构体而不是对象呢?原因在于性能。程序(尤其是GUI程序)会使用到许多临时坐标、大小和矩形区域来完成工作。记住,所有的Objective-c对象都是动态分配的,而动态分配是一个代价较大的操作,它会消耗大量的时间。所以将这些结构体创建成第一级的对象会在使用过程中大大增加系统开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值