OC基础-Foundation——常用结构体 (NSRange 、NSPoint、NSsize、NSRect)

本文详细介绍了Objective-C中四种常用的结构体:NSRange、NSPoint、NSSize和NSRect。每种结构体都附有实例说明,包括它们的定义、用途及三种不同的赋值方式。
Oc为我们提供了四个结构体,定义的变量可以存在栈上和堆上。
分别是:范围:NSRange ,  几体数据类型 : 点(NSPoint) 尺寸(NSsize) 区域(NSRect);

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<一> NSRange:   用来表示相关事物的范围。


 结构体原形:typedefstruct _NSRange
        {
           NSUInteger location;
           NSUInteger length;
        }NSRange;

NSRange:(用于存储单词或语句,在里面的位置)
location:起始位置,
length:元素个数。
NSRange,是结构体,不是类,定义的变量不需要加*
三种赋值方式:
       NSRange range;
        //c语言结构体变量的赋值的方法
        range.location=17;
        range.length=4;
        NSLog(@"%lu %lu",range.location, range.length);

        //c语言结构体变量初始化的方法
      NSRange range1={17,4};
       NSLog(@"%lu %lu",range1.location, range1.length);


        //oc的赋值方法 //最常用
        range=NSMakeRange(17,4);
        NSLog(@"%lu %lu",range1.location, range1.length);

cocoa提供的一个快捷函数NSMakeRange();
使用NSMakeRange()的好处是可以在任何能够使用函数的地方使用它,例如在方法调用中将其当成参数传递。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<二>NSPoint 代带平面上的点
结构体原形:
typedefstruct  _NSPoint
        {
           float x;
           float y;
        }NSPoint;

三种赋值方式:
        NSPoint point;
        point.x=10;
        point.y=20;
       NSLog(@"%f,%f",point.x,point.y);
        
      NSPoint point1={10.3,20.6};
      NSLog(@"%f,%f",point1.x,point1.y);
        
       point=NSMakePoint(10.5,11.3);
       NSLog(@"%f,%f",point.x,point.y);
注:x,y是值是float类型的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<三>   NSSize 用来存储长度和宽度。尺寸。

结构体原形:
typedef struct _NSSize
        {
           float width;
           float height;
        }NSSize;


三种赋值方式:
        NSSize size;
        size.width=15;
        size.height=20;
       NSLog(@"%f %f",size.width,size.height);
        
       NSSize size1={15,20};
       NSLog(@"%f %f",size1.width,size1.height);
        
        size=NSMakeSize(20,30);
       NSLog(@"%f %f",size.width,size.height);


--------------------------------------------------------------------------------------------------------------
<四>   NSRect 用来表示区域。
结构体原形:
typedef struct _NSRect
        {
           NSPoint origin;
           NSSize  size;
        }NSRect;

三种赋值方式:
NSRect rect;
        rect.origin.x=15;
        rect.origin.y=20;
        rect.size.width=8;
        rect.size.height=15;
        
       NSRect rect1={15,20,8,15};
        
        rect =NSMakeRect(15,20,15,20);

         NSSize size=NSMakeSize(50,60);
       NSLog(@"%f  %f ",size.width,size.height);
       NSRect rect=NSMakeRect(5.3,4.6, 20.5, 40.5);
       NSLog(@"%f  %f  %f  %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);



#import <Foundation/Foundation.h>

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

    @autoreleasepool {
一般的CGPoint之类可以直接用,但是比较高级的函数需要加入CoreGraph框架
<img src="https://img-blog.youkuaiyun.com/20150428234421172?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFvamllMTAyMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

        NSRange range=NSMakeRange(50, 60);
        NSString *rangeString=NSStringFromRange(range);
        NSLog(@"%@",rangeString);
        
        //NSPoint/CGPoing 是一样的
        NSPoint point=NSMakePoint(0, 0);
        //CGPoint dd=CGPointMake(0, 0);
        NSString *pointString=NSStringFromPoint(point);
        NSLog(@"%@",pointString);
        
        //CGSize/NSSize是一样的
        CGSize size=CGSizeMake(300, 200);
        //NSSize size1=NSMakeSize(300, 200);
        NSString *sizeString=NSStringFromSize(size);
        NSLog(@"%@",sizeString);
        
        //CGRect/NSRect是一样的
        CGRect rect=CGRectMake(0,0, 80, 90);
        //NSRect rect1=NSMakeRect(0, 0, 50, 60);
        NSString *rectString=NSStringFromRect(rect);
        NSLog(@"%@",rectString);
        
        //表示的都是零
        CGPointZero;
        CGSizeZero;
        CGRectZero;
        //判断是否相等
        //使用这些函数的前提是添加CoreGraphics 框架
       BOOL b= CGRectEqualToRect(CGRectMake(0, 0, 80, 80), CGRectMake(0, 0, 80, 80));
        CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);
        CGPointEqualToPoint(<#CGPoint point1#>, <#CGPoint point2#>);
        //判断左边是否包含右边的
        CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
    
        
    
    
    
    
    
    
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值